|
outer
|
‘outer’: event 1
| 24 | void outer (void) |
| ^~~~~ |
| | |
| (1) entry to ‘outer’ |
|
|
‘outer’: event 2
| 30 | i = SETJMP(env); |
| ^~~~~~ |
| | |
| (2) ‘setjmp’ called here |
|
|
‘outer’: events 3-5
| 32 | if (i == 0) |
| ^ |
| | |
| (3) following ‘true’ branch (when ‘i == 0’)... |
| 33 | { |
| 34 | foo (1); |
| ~~~~~~~ |
| | |
| (4) ...to here |
| 35 | middle (); |
| ~~~~~~~~~ |
| | |
| (5) calling ‘middle’ from ‘outer’ |
|
|
middle
|
‘middle’: events 6-8
| 17 | static void middle (void) |
| ^~~~~~ |
| | |
| (6) entry to ‘middle’ |
| 18 | { |
| 19 | void *ptr = malloc (1024); |
| ~~~~~~~~~~~~~ |
| | |
| (7) allocated here |
| 20 | inner (); |
| ~~~~~~~~ |
| | |
| (8) calling ‘inner’ from ‘middle’ |
|
|
inner
|
‘inner’: events 9-11
| 12 | static void inner (void) |
| ^~~~~ |
| | |
| (9) entry to ‘inner’ |
| 13 | { |
| 14 | longjmp (env, 1); /* { dg-warning "leak of 'ptr'" } */ |
| ~~~~~~~~~~~~~~~~ |
| | |
| (10) ‘ptr’ leaks here; was allocated at (7) |
| (11) rewinding from ‘longjmp’ in ‘inner’... |
|
|
|
|
‘outer’: event 12
| 30 | i = SETJMP(env); |
| ^~~~~~ |
| | |
| (12) ...to ‘setjmp’ in ‘outer’ (saved at (2)) |
|
|