|
new_string_obj
‘new_string_obj’: events 1-2
47 | string_obj *new_string_obj (const char *str) |
| ^~~~~~~~~~~~~~ |
| | |
| (1) entry to ‘new_string_obj’ |
[...] | |
53 | = (string_obj *)alloc_obj (&str_type, sizeof (string_obj) + len + 1); |
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (2) calling ‘alloc_obj’ from ‘new_string_obj’ |
|
|
alloc_obj
‘alloc_obj’: events 3-4
37 | base_obj *alloc_obj (type_obj *ob_type, size_t sz) |
| ^~~~~~~~~ |
| | |
| (3) entry to ‘alloc_obj’ |
[...] | |
40 | if (!obj) |
| ~ |
| | |
| (4) following ‘true’ branch (when ‘obj’ is NULL)... |
|
‘alloc_obj’: event 5
41 | return NULL; |
| ^~~~ |
| | |
| (5) ...to here |
|
‘alloc_obj’: event 6
41 | return NULL; |
| ^~~~ |
| | |
| (6) ‘0’ is NULL |
|
|
‘new_string_obj’: events 7-9
53 | = (string_obj *)alloc_obj (&str_type, sizeof (string_obj) + len + 1); |
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (7) returning to ‘new_string_obj’ from ‘alloc_obj’ |
[...] | |
61 | str_obj->str_len = len; /* { dg-warning "dereference of NULL 'str_obj'" } */ |
| ~~~~~~~~~~~~~~~~~~~~~~ |
| | |
| (9) dereference of NULL ‘str_obj’ |
[...] | |
64 | return str_obj; |
| ~~~~~~~ |
| | |
| (8) ‘str_obj’ is NULL |
|
|