Bug path
‘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’
:
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’
:
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)