Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <stdlib.h>
- #define defer(function) ((void)function)
- int function(void)
- {
- char *a = malloc(sizeof *a * 128);
- if (a == NULL)
- {
- return 0;
- }
- defer(free)(a);
- char *b = malloc(sizeof *b * 128);
- if (b == NULL)
- {
- // defer:
- // call free(a);
- return 0;
- }
- defer(free)(b);
- char *c = malloc(sizeof *c * 128);
- if (c == NULL)
- {
- // defer:
- // call free(a);
- // call free(b);
- return 0;
- }
- defer(free)(c);
- memset(a, 0, sizeof *a * 128);
- memset(b, 0, sizeof *b * 128);
- memset(c, 0, sizeof *c * 128);
- if (1)
- {
- // defer: ???
- abort(); // critical error, exit, pthread_exit, ExitProcess, ExitThread etc.
- }
- // defer:
- // call free(a);
- // call free(b);
- // call free(c);
- return 1;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement