Bug path

new_string_obj
‘new_string_obj’: events 1-2
69base_obj *new_string_obj (const char *str)
^~~~~~~~~~~~~~
|
(1) entry to ‘new_string_obj’
[...]
75 = (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
59base_obj *alloc_obj (type_obj *ob_type, size_t sz)
^~~~~~~~~
|
(3) entry to ‘alloc_obj’
[...]
62 if (!obj)
~
|
(4) following ‘true’ branch (when ‘obj’ is NULL)...
‘alloc_obj’: event 5
63 return NULL;
^~~~
|
(5) ...to here
‘alloc_obj’: event 6
63 return NULL;
^~~~
|
(6) ‘0’ is NULL
‘new_string_obj’: events 7-9
75 = (string_obj *)alloc_obj (&str_type, sizeof (string_obj) + len + 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
(7) returning to ‘new_string_obj’ from ‘alloc_obj’
[...]
83 str_obj->str_len = len; /* { dg-warning "dereference of NULL 'str_obj'" } */
~~~~~~~~~~~~~~~~~~~~~~
|
(9) dereference of NULL ‘str_obj’
[...]
86 return (base_obj *)str_obj;
~~~~~~~~~~~~~~~~~~~
|
(8) ‘str_obj’ is NULL