1 /* { dg-do compile } */ 2 /* { dg-options "-fdiagnostics-path-format=separate-events" } */ 3 4 #include <stdlib.h> 5 wrapped_malloc(size_t size)6void *wrapped_malloc (size_t size) 7 { 8 return malloc (size); 9 } 10 wrapped_free(void * ptr)11void wrapped_free (void *ptr) 12 { 13 free (ptr); /* { dg-warning "double-free of 'ptr' \\\[CWE-415\\]" } */ 14 } 15 16 typedef struct boxed_int 17 { 18 int i; 19 } boxed_int; 20 21 boxed_int * make_boxed_int(int i)22make_boxed_int (int i) 23 { 24 boxed_int *result = (boxed_int *)wrapped_malloc (sizeof (boxed_int)); 25 result->i = i; 26 return result; 27 } 28 29 void free_boxed_int(boxed_int * bi)30free_boxed_int (boxed_int *bi) 31 { 32 wrapped_free (bi); 33 } 34 test(int i)35void test (int i) 36 { /* { dg-message "\\(1\\) entering 'test'" } */ 37 boxed_int *obj = make_boxed_int (i); /* { dg-message "\\(2\\) calling 'make_boxed_int'" } */ 38 /* etc */ 39 40 free_boxed_int (obj); 41 42 free_boxed_int (obj); 43 } 44 45