| 
  
 test 
  | 
     ‘test’: events 1-2 
|    15 |     Byte *uncompr  = (Byte*)calloc((uInt)uncomprLen, 1); |  
 |                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~ |  
 |                             | |  
 |                             (1) allocated here |  
|    16 |     if (compr == Z_NULL || uncompr == Z_NULL) |  
 |        ~                      |  
 |        | |  
 |        (2) following ‘false’ branch (when ‘compr’ is non-NULL)... |  
 
 |   
  | 
     ‘test’: event 3 
|    16 |     if (compr == Z_NULL || uncompr == Z_NULL) |  
 |                         ^ |  
 |                         | |  
 |                         (3) ...to here |  
 
 |   
  | 
     ‘test’: event 4 
|    16 |     if (compr == Z_NULL || uncompr == Z_NULL) |  
 |                         ^ |  
 |                         | |  
 |                         (4) assuming ‘uncompr’ is non-NULL |  
 
 |   
  | 
     ‘test’: events 5-7 
|    16 |     if (compr == Z_NULL || uncompr == Z_NULL) |  
 |                         ^ |  
 |                         | |  
 |                         (5) following ‘false’ branch (when ‘uncompr’ is non-NULL)... |  
| [...] |  |  
|    21 |     strcpy((char*)uncompr, "garbage"); |  
 |     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |  
 |     | |  
 |     (6) ...to here |  
|    22 |     return 0; /* { dg-warning "leak of 'uncompr'" "uncompr leak" } */ |  
 |            ~              |  
 |            | |  
 |            (7) ‘uncompr’ leaks here; was allocated at (1) |  
 
 |   
 |