* varobj.c (c_value_of_child): Release memory for "name" when
authorKeith Seitz <keiths@redhat.com>
Tue, 20 Nov 2001 18:08:14 +0000 (18:08 +0000)
committerKeith Seitz <keiths@redhat.com>
Tue, 20 Nov 2001 18:08:14 +0000 (18:08 +0000)
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.

gdb/ChangeLog
gdb/varobj.c

index 392ccda9d4b89cb476ef2996a8aae58d738a0d60..914d32bde6c9d05b8e948ca6f82c73ddcbfc3f6c 100644 (file)
@@ -1,3 +1,12 @@
+2001-11-20  Keith Seitz  <keiths@redhat.com>
+
+       * 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.
+
 2001-11-20  Keith Seitz  <keiths@redhat.com>
 
        * top.c (gdb_init): Call init_ui_hook before initializing
index 88af3e901c04cd29b3e35c745e9cb3700b5fea7d..4cf6204bcc3eefc07c43ce0900f28500ee01dd45 100644 (file)
@@ -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))
        {