[1/6] Free results of varobj_get_expression
Commit Message
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/mi/mi-cmd-var.c | 13 +++++++++++--
gdb/varobj.c | 3 ++-
2 files changed, 13 insertions(+), 3 deletions(-)
Comments
On Thu, Jan 29, 2015 at 02:28:31PM -0500, Simon Marchi wrote:
> 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.
OK!
Thank you,
On 15-01-29 10:12 PM, Joel Brobecker wrote:
> On Thu, Jan 29, 2015 at 02:28:31PM -0500, Simon Marchi wrote:
>> 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.
>
> OK!
>
> Thank you,
Pushed, thanks!
@@ -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
@@ -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)