From patchwork Thu Jan 29 19:28:31 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Simon Marchi X-Patchwork-Id: 4844 Received: (qmail 15490 invoked by alias); 29 Jan 2015 19:28:48 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 15448 invoked by uid 89); 29 Jan 2015 19:28:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.0 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: usevmg20.ericsson.net Received: from usevmg20.ericsson.net (HELO usevmg20.ericsson.net) (198.24.6.45) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-SHA encrypted) ESMTPS; Thu, 29 Jan 2015 19:28:43 +0000 Received: from EUSAAHC005.ericsson.se (Unknown_Domain [147.117.188.87]) by usevmg20.ericsson.net (Symantec Mail Security) with SMTP id 2A.85.03307.2F63AC45; Thu, 29 Jan 2015 14:34:42 +0100 (CET) Received: from elxcz23q12-y4.mo.ca.am.ericsson.se (147.117.188.8) by smtps-am.internal.ericsson.com (147.117.188.87) with Microsoft SMTP Server (TLS) id 14.3.195.1; Thu, 29 Jan 2015 14:28:40 -0500 From: Simon Marchi To: CC: Simon Marchi Subject: [PATCH 1/6] Free results of varobj_get_expression Date: Thu, 29 Jan 2015 14:28:31 -0500 Message-ID: <1422559716-5480-1-git-send-email-simon.marchi@ericsson.com> MIME-Version: 1.0 X-IsSubscribed: yes 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(-) diff --git a/gdb/mi/mi-cmd-var.c b/gdb/mi/mi-cmd-var.c index d873a17..d9b37f8 100644 --- a/gdb/mi/mi-cmd-var.c +++ b/gdb/mi/mi-cmd-var.c @@ -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 diff --git a/gdb/varobj.c b/gdb/varobj.c index dad284d..6c9257d 100644 --- a/gdb/varobj.c +++ b/gdb/varobj.c @@ -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)