Advertisement
Guest User

example

a guest
Feb 23rd, 2022
45
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 0.84 KB | None | 0 0
  1. #include <string.h>
  2. #include <stdlib.h>
  3.  
  4. #define defer(function) ((void)function)
  5.  
  6. int function(void)
  7. {
  8.   char *a = malloc(sizeof *a * 128);
  9.  
  10.   if (a == NULL)
  11.   {
  12.     return 0;
  13.   }
  14.  
  15.   defer(free)(a);
  16.  
  17.   char *b = malloc(sizeof *b * 128);
  18.  
  19.   if (b == NULL)
  20.   {
  21.     // defer:
  22.     //   call free(a);
  23.  
  24.     return 0;
  25.   }
  26.  
  27.   defer(free)(b);
  28.  
  29.   char *c = malloc(sizeof *c * 128);
  30.  
  31.   if (c == NULL)
  32.   {
  33.     // defer:
  34.     //   call free(a);
  35.     //   call free(b);
  36.  
  37.     return 0;
  38.   }
  39.  
  40.   defer(free)(c);
  41.  
  42.   memset(a, 0, sizeof *a * 128);
  43.   memset(b, 0, sizeof *b * 128);
  44.   memset(c, 0, sizeof *c * 128);
  45.  
  46.   if (1)
  47.   {
  48.     // defer: ???
  49.  
  50.     abort(); // critical error, exit, pthread_exit, ExitProcess, ExitThread etc.
  51.   }
  52.  
  53.   // defer:
  54.   //   call free(a);
  55.   //   call free(b);
  56.   //   call free(c);
  57.  
  58.   return 1;
  59. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement