Free results of varobj_get_expression
authorSimon Marchi <simon.marchi@ericsson.com>
Fri, 30 Jan 2015 18:56:56 +0000 (13:56 -0500)
committerSimon Marchi <simon.marchi@ericsson.com>
Fri, 30 Jan 2015 18:56:56 +0000 (13:56 -0500)
varobj_get_expression returns an allocated string, which must be freed
by the caller.

gdb/ChangeLog:

* mi-cmd-var.c (print_varobj): Free varobj_get_expression
result.
(mi_cmd_var_info_expression): Same.
* varobj.c (varobj_get_expression): Mention in the comment that
the result must by freed by the caller.

gdb/ChangeLog
gdb/mi/mi-cmd-var.c
gdb/varobj.c

index 3f3f3f389c1b1e38695fd412e1d1d9b9dcc3acde..6738267ec6f96852b85d6b88bd83728e41848db9 100644 (file)
@@ -1,3 +1,11 @@
+2015-01-30  Simon Marchi  <simon.marchi@ericsson.com>
+
+       * mi-cmd-var.c (print_varobj): Free varobj_get_expression
+       result.
+       (mi_cmd_var_info_expression): Same.
+       * varobj.c (varobj_get_expression): Mention in the comment that
+       the result must by freed by the caller.
+
 2015-01-30  Simon Marchi  <simon.marchi@ericsson.com>
 
        * mi/mi-cmd-var.c (mi_cmd_var_info_type): Free result of
index d873a177649d8b35f430112b3868615436477113..d9b37f85f5b13ded72d53383cdd423274c781900 100644 (file)
@@ -55,7 +55,12 @@ print_varobj (struct varobj *var, enum print_values print_values,
 
   ui_out_field_string (uiout, "name", varobj_get_objname (var));
   if (print_expression)
-    ui_out_field_string (uiout, "exp", varobj_get_expression (var));
+    {
+      char *exp = varobj_get_expression (var);
+
+      ui_out_field_string (uiout, "exp", exp);
+      xfree (exp);
+    }
   ui_out_field_int (uiout, "numchild", varobj_get_num_children (var));
   
   if (mi_print_value_p (var, print_values))
@@ -485,6 +490,7 @@ mi_cmd_var_info_expression (char *command, char **argv, int argc)
   struct ui_out *uiout = current_uiout;
   const struct language_defn *lang;
   struct varobj *var;
+  char *exp;
 
   if (argc != 1)
     error (_("-var-info-expression: Usage: NAME."));
@@ -495,7 +501,10 @@ mi_cmd_var_info_expression (char *command, char **argv, int argc)
   lang = varobj_get_language (var);
 
   ui_out_field_string (uiout, "lang", lang->la_natural_name);
-  ui_out_field_string (uiout, "exp", varobj_get_expression (var));
+
+  exp = varobj_get_expression (var);
+  ui_out_field_string (uiout, "exp", exp);
+  xfree (exp);
 }
 
 void
index dad284d67a5690f5832531925b82abd2f96d7ee3..6c9257ddeba356348cc2ea453c5fe94b5d807894 100644 (file)
@@ -492,7 +492,8 @@ varobj_get_objname (struct varobj *var)
   return var->obj_name;
 }
 
-/* Given the handle, return the expression represented by the object.  */
+/* Given the handle, return the expression represented by the object.  The
+   result must be freed by the caller.  */
 
 char *
 varobj_get_expression (struct varobj *var)