mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-29 02:20:51 +00:00
* varobj.c (c_value_of_child): Release memory for "name" when
finshed using it. (c_type_of_child): Likewise. (cplus_value_of_child): Isolate the use of name_of_child to one case that needs it. Release memory for "name" when finished using it.
This commit is contained in:
@@ -1977,6 +1977,7 @@ c_value_of_child (struct varobj *parent, int index)
|
||||
if (value != NULL)
|
||||
release_value (value);
|
||||
|
||||
xfree (name);
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -2019,6 +2020,7 @@ c_type_of_child (struct varobj *parent, int index)
|
||||
break;
|
||||
}
|
||||
|
||||
xfree (name);
|
||||
return type;
|
||||
}
|
||||
|
||||
@@ -2281,7 +2283,6 @@ cplus_value_of_child (struct varobj *parent, int index)
|
||||
{
|
||||
struct type *type;
|
||||
struct value *value;
|
||||
char *name;
|
||||
|
||||
if (CPLUS_FAKE_CHILD (parent))
|
||||
type = get_type_deref (parent->parent);
|
||||
@@ -2289,19 +2290,22 @@ cplus_value_of_child (struct varobj *parent, int index)
|
||||
type = get_type_deref (parent);
|
||||
|
||||
value = NULL;
|
||||
name = name_of_child (parent, index);
|
||||
|
||||
if (((TYPE_CODE (type)) == TYPE_CODE_STRUCT) ||
|
||||
((TYPE_CODE (type)) == TYPE_CODE_UNION))
|
||||
{
|
||||
if (CPLUS_FAKE_CHILD (parent))
|
||||
{
|
||||
char *name;
|
||||
struct value *temp = parent->parent->value;
|
||||
|
||||
name = name_of_child (parent, index);
|
||||
gdb_value_struct_elt (NULL, &value, &temp, NULL, name, NULL,
|
||||
"cplus_structure");
|
||||
if (value != NULL)
|
||||
release_value (value);
|
||||
|
||||
xfree (name);
|
||||
}
|
||||
else if (index >= TYPE_N_BASECLASSES (type))
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user