|
test_3
‘test_3’: events 1-2
46 | void test_3 (void *ptr) |
| ^~~~~~ |
| | |
| (1) entry to ‘test_3’ |
47 | { |
48 | called_by_test_3 (ptr, free); |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (2) calling ‘called_by_test_3’ from ‘test_3’ |
|
|
called_by_test_3
‘called_by_test_3’: events 3-4
41 | called_by_test_3 (void *ptr, deallocator_t dealloc_fn) |
| ^~~~~~~~~~~~~~~~ |
| | |
| (3) entry to ‘called_by_test_3’ |
42 | { |
43 | dealloc_fn (ptr); /* { dg-warning "double-'free'" } */ |
| ~~~~~~~~~~~~~~~~ |
| | |
| (4) first ‘free’ here |
|
|
‘test_3’: events 5-6
48 | called_by_test_3 (ptr, free); |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (5) returning to ‘test_3’ from ‘called_by_test_3’ |
49 | called_by_test_3 (ptr, free); |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (6) passing freed pointer ‘ptr’ in call to ‘called_by_test_3’ from ‘test_3’ |
|
|
called_by_test_3
‘called_by_test_3’: events 7-8
41 | called_by_test_3 (void *ptr, deallocator_t dealloc_fn) |
| ^~~~~~~~~~~~~~~~ |
| | |
| (7) entry to ‘called_by_test_3’ |
42 | { |
43 | dealloc_fn (ptr); /* { dg-warning "double-'free'" } */ |
| ~~~~~~~~~~~~~~~~ |
| | |
| (8) second ‘free’ here; first ‘free’ was at (4) |
|
|
|