From patchwork Tue Sep 12 18:57:33 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tom Tromey X-Patchwork-Id: 22856 Received: (qmail 117293 invoked by alias); 12 Sep 2017 18:57:51 -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 117176 invoked by uid 89); 12 Sep 2017 18:57:50 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.8 required=5.0 tests=AWL, BAYES_00, GIT_PATCH_0, GIT_PATCH_1, GIT_PATCH_2, GIT_PATCH_3, RCVD_IN_DNSWL_NONE, RCVD_IN_SORBS_SPAM, SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: gproxy6-pub.mail.unifiedlayer.com Received: from gproxy6-pub.mail.unifiedlayer.com (HELO gproxy6-pub.mail.unifiedlayer.com) (67.222.39.168) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 12 Sep 2017 18:57:47 +0000 Received: from cmgw3 (unknown [10.0.90.84]) by gproxy6.mail.unifiedlayer.com (Postfix) with ESMTP id 3C64A1E08DB for ; Tue, 12 Sep 2017 12:57:45 -0600 (MDT) Received: from box522.bluehost.com ([74.220.219.122]) by cmgw3 with id 8ixi1w00F2f2jeq01ixlsS; Tue, 12 Sep 2017 12:57:45 -0600 X-Authority-Analysis: v=2.2 cv=K/VSJ2eI c=1 sm=1 tr=0 a=GsOEXm/OWkKvwdLVJsfwcA==:117 a=GsOEXm/OWkKvwdLVJsfwcA==:17 a=2JCJgTwv5E4A:10 a=zstS-IiYAAAA:8 a=EDdzv2cPSgz4X8OFHpkA:9 a=4G6NA9xxw8l3yy4pmD5M:22 Received: from 75-166-76-94.hlrn.qwest.net ([75.166.76.94]:46142 helo=bapiya.Home) by box522.bluehost.com with esmtpsa (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.87) (envelope-from ) id 1drqNS-001eRR-4T; Tue, 12 Sep 2017 12:57:42 -0600 From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [RFA 08/11] Use string and unique_xmalloc_ptr in mi-main.c Date: Tue, 12 Sep 2017 12:57:33 -0600 Message-Id: <20170912185736.20436-9-tom@tromey.com> In-Reply-To: <20170912185736.20436-1-tom@tromey.com> References: <20170912185736.20436-1-tom@tromey.com> X-BWhitelist: no X-Exim-ID: 1drqNS-001eRR-4T X-Source-Sender: 75-166-76-94.hlrn.qwest.net (bapiya.Home) [75.166.76.94]:46142 X-Source-Auth: tom+tromey.com X-Email-Count: 9 X-Source-Cap: ZWx5bnJvYmk7ZWx5bnJvYmk7Ym94NTIyLmJsdWVob3N0LmNvbQ== X-Local-Domain: yes Change a couple of spots in mi-main.c to use std::string or unique_xmalloc_ptr. unique_xmalloc_ptr is used here where the string is writeable; I generally prefer to pretend that string is read-only, perhaps not for a good resaon. ChangeLog 2017-09-12 Tom Tromey * mi/mi-main.c (mi_execute_cli_command): Use unique_xmalloc_ptr. (mi_execute_async_cli_command): Likewise. (mi_cmd_trace_frame_collected): Use std::string. --- gdb/ChangeLog | 6 ++++++ gdb/mi/mi-main.c | 40 +++++++++++----------------------------- 2 files changed, 17 insertions(+), 29 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 7158579..6368f41 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,5 +1,11 @@ 2017-09-12 Tom Tromey + * mi/mi-main.c (mi_execute_cli_command): Use unique_xmalloc_ptr. + (mi_execute_async_cli_command): Likewise. + (mi_cmd_trace_frame_collected): Use std::string. + +2017-09-12 Tom Tromey + * mi/mi-main.c (mi_cmd_data_write_memory_bytes): Use gdb::byte_vector. diff --git a/gdb/mi/mi-main.c b/gdb/mi/mi-main.c index c8c4a97..0147fb9 100644 --- a/gdb/mi/mi-main.c +++ b/gdb/mi/mi-main.c @@ -2264,41 +2264,31 @@ mi_execute_cli_command (const char *cmd, int args_p, const char *args) { if (cmd != 0) { - struct cleanup *old_cleanups; - char *run; + gdb::unique_xmalloc_ptr run; if (args_p) - run = xstrprintf ("%s %s", cmd, args); + run.reset (xstrprintf ("%s %s", cmd, args)); else - run = xstrdup (cmd); + run.reset (xstrdup (cmd)); if (mi_debug_p) /* FIXME: gdb_???? */ fprintf_unfiltered (gdb_stdout, "cli=%s run=%s\n", - cmd, run); - old_cleanups = make_cleanup (xfree, run); - execute_command (run, 0 /* from_tty */ ); - do_cleanups (old_cleanups); - return; + cmd, run.get ()); + execute_command (run.get (), 0 /* from_tty */ ); } } void mi_execute_async_cli_command (const char *cli_command, char **argv, int argc) { - struct cleanup *old_cleanups; - char *run; + gdb::unique_xmalloc_ptr run; if (mi_async_p ()) - run = xstrprintf ("%s %s&", cli_command, argc ? *argv : ""); + run.reset (xstrprintf ("%s %s&", cli_command, argc ? *argv : "")); else - run = xstrprintf ("%s %s", cli_command, argc ? *argv : ""); - old_cleanups = make_cleanup (xfree, run); - - execute_command (run, 0 /* from_tty */ ); + run.reset (xstrprintf ("%s %s", cli_command, argc ? *argv : "")); - /* Do this before doing any printing. It would appear that some - print code leaves garbage around in the buffer. */ - do_cleanups (old_cleanups); + execute_command (run.get (), 0 /* from_tty */ ); } void @@ -2804,14 +2794,10 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc) { struct cleanup *cleanups; int tvar; - char *tsvname; int i; ui_out_emit_list list_emitter (uiout, "tvars"); - tsvname = NULL; - cleanups = make_cleanup (free_current_contents, &tsvname); - for (i = 0; VEC_iterate (int, tinfo->tvars, i, tvar); i++) { struct trace_state_variable *tsv; @@ -2822,10 +2808,8 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc) if (tsv != NULL) { - tsvname = (char *) xrealloc (tsvname, strlen (tsv->name) + 2); - tsvname[0] = '$'; - strcpy (tsvname + 1, tsv->name); - uiout->field_string ("name", tsvname); + std::string tsvname = std::string ("$") + tsv->name; + uiout->field_string ("name", tsvname.c_str ()); tsv->value_known = target_get_trace_state_variable_value (tsv->number, &tsv->value); @@ -2837,8 +2821,6 @@ mi_cmd_trace_frame_collected (const char *command, char **argv, int argc) uiout->field_skip ("current"); } } - - do_cleanups (cleanups); } /* Memory. */