|
a5
|
‘a5’: events 1-2
| 16 | void a5 (void) |
| ^~ |
| | |
| (1) entry to ‘a5’ |
| [...] | |
| 19 | hv (&qb); |
| ~~~~~~~~ |
| | |
| (2) calling ‘hv’ from ‘a5’ |
|
|
hv
|
‘hv’: events 3-7
| 7 | void *hv (struct foo **tm) |
| ^~ |
| | |
| (3) entry to ‘hv’ |
| 8 | { |
| 9 | void *p = __builtin_malloc (4); |
| ~~~~~~~~~~~~~~~~~~~~ |
| | |
| (4) allocated here |
| 10 | *tm = p; |
| 11 | if (!p) |
| ~ |
| | |
| (5) assuming ‘qb’ is non-NULL |
| (6) following ‘false’ branch (when ‘p’ is non-NULL)... |
| 12 | abort (); |
| 13 | return p; |
| ~ |
| | |
| (7) ...to here |
|
|
|
‘a5’: events 8-9
| 19 | hv (&qb); |
| ^~~~~~~~ |
| | |
| (8) returning to ‘a5’ from ‘hv’ |
| 20 | } /* { dg-warning "leak of 'qb'" } */ |
| ~ |
| | |
| (9) ‘qb’ leaks here; was allocated at (4) |
|
|