|
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) |
|
|
|