From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-io1-xd34.google.com (mail-io1-xd34.google.com [IPv6:2607:f8b0:4864:20::d34]) by sourceware.org (Postfix) with ESMTPS id 18B83384B0C7 for ; Mon, 20 Jun 2022 13:46:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 18B83384B0C7 Received: by mail-io1-xd34.google.com with SMTP id h8so11112760iof.11 for ; Mon, 20 Jun 2022 06:46:56 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=SjqEnc93QbzqaWp/YOSJlscrImKTwnwHRqnoewzATgQ=; b=Yg73QFfBPt9bkeS4iLFTvECwsian1/I6ElEYKFTKHk0G1JACGqUq/ypiPXQAKrzWH6 wbRJg/WEV3OSPazugbT5zTxBDKBRdyBl8kolnAibuDSxeBl47U+pFmb4MTqa+4bEd/EP k3DJdDR05Jf9FwY5IlSmgLBomjicRgfMfRwlgC7kZ3KdydKxA3qk8yAP/DwPBpvcE8sD v04IzbzXsy/gtD4tkCCC6K6mKQ3AVAvU0gFtfTEbLVjlh56XzykxXjrtiUToeALJG3pR tS2cmeZq82s6jJOVSBNpr9+xB3rYx9jwwVwDGgv1ALfdf5/iIAQo+uFzCT/3fJMrU2fH 8OeQ== X-Gm-Message-State: AJIora+p64siEWy0XOFF8/OtvWAQwjo1GxmkjabFi5TdzgUc1ngHuA3m GhIRGCQFgW4Kt2LeyGIdeZwoprjKJyHE+g== X-Google-Smtp-Source: AGRyM1uATI8FxUeaCvNFTgJX5LGIgylxINFXBC0tsMX7+aDYenvdUtWZR5cJG2LiAJjmRJ8PTTJlYg== X-Received: by 2002:a05:6638:38a3:b0:337:9323:d881 with SMTP id b35-20020a05663838a300b003379323d881mr9062751jav.133.1655732815407; Mon, 20 Jun 2022 06:46:55 -0700 (PDT) Received: from murgatroyd.Home (71-211-187-180.hlrn.qwest.net. [71.211.187.180]) by smtp.gmail.com with ESMTPSA id x68-20020a6bc747000000b006692192baf7sm6636354iof.25.2022.06.20.06.46.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 20 Jun 2022 06:46:54 -0700 (PDT) From: Tom Tromey To: gdb-patches@sourceware.org Cc: Tom Tromey Subject: [PATCH 3/3] Use std::string for interpreter_p Date: Mon, 20 Jun 2022 07:46:50 -0600 Message-Id: <20220620134650.2664575-4-tromey@adacore.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20220620134650.2664575-1-tromey@adacore.com> References: <20220620134650.2664575-1-tromey@adacore.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 20 Jun 2022 13:46:57 -0000 The global interpreter_p is a manually-managed 'char *'. This patch changes it to be a std::string instead, and removes some erroneous comments. --- gdb/interps.c | 11 ++--------- gdb/main.c | 24 +++++++++--------------- gdb/main.h | 2 +- gdb/tui/tui-interp.c | 9 +++------ 4 files changed, 15 insertions(+), 31 deletions(-) diff --git a/gdb/interps.c b/gdb/interps.c index 0c440e78685..3a9c590b8c8 100644 --- a/gdb/interps.c +++ b/gdb/interps.c @@ -168,15 +168,8 @@ interp_set (struct interp *interp, bool top_level) if (top_level) ui_interp->top_level_interpreter = interp; - /* We use interpreter_p for the "set interpreter" variable, so we need - to make sure we have a malloc'ed copy for the set command to free. */ - if (interpreter_p != NULL - && strcmp (interp->name (), interpreter_p) != 0) - { - xfree (interpreter_p); - - interpreter_p = xstrdup (interp->name ()); - } + if (interpreter_p != interp->name ()) + interpreter_p = interp->name (); /* Run the init proc. */ if (!interp->inited) diff --git a/gdb/main.c b/gdb/main.c index ec2b7b01752..8c97987956b 100644 --- a/gdb/main.c +++ b/gdb/main.c @@ -56,10 +56,8 @@ #include "observable.h" #include "serial.h" -/* The selected interpreter. This will be used as a set command - variable, so it should always be malloc'ed - since - do_setshow_command will free it. */ -char *interpreter_p; +/* The selected interpreter. */ +std::string interpreter_p; /* System root path, used to find libraries etc. */ std::string gdb_sysroot; @@ -729,7 +727,7 @@ captured_main_1 (struct captured_main_args *context) this captured main, or one specified by the user at start up, or the console. Initialize the interpreter to the one requested by the application. */ - interpreter_p = xstrdup (context->interpreter_p); + interpreter_p = context->interpreter_p; /* Parse arguments and options. */ { @@ -866,8 +864,7 @@ captured_main_1 (struct captured_main_args *context) case OPT_TUI: /* --tui is equivalent to -i=tui. */ #ifdef TUI - xfree (interpreter_p); - interpreter_p = xstrdup (INTERP_TUI); + interpreter_p = INTERP_TUI; #else error (_("%s: TUI mode is not supported"), gdb_program_name); #endif @@ -877,14 +874,12 @@ captured_main_1 (struct captured_main_args *context) actually useful, and if it is, what it should do. */ #ifdef GDBTK /* --windows is equivalent to -i=insight. */ - xfree (interpreter_p); - interpreter_p = xstrdup (INTERP_INSIGHT); + interpreter_p = INTERP_INSIGHT; #endif break; case OPT_NOWINDOWS: /* -nw is equivalent to -i=console. */ - xfree (interpreter_p); - interpreter_p = xstrdup (INTERP_CONSOLE); + interpreter_p = INTERP_CONSOLE; break; case 'f': annotation_level = 1; @@ -950,8 +945,7 @@ captured_main_1 (struct captured_main_args *context) } #endif /* GDBTK */ case 'i': - xfree (interpreter_p); - interpreter_p = xstrdup (optarg); + interpreter_p = optarg; break; case 'd': dirarg.push_back (optarg); @@ -1133,7 +1127,7 @@ captured_main_1 (struct captured_main_args *context) GDB retain the old MI1 interpreter startup behavior. Output the copyright message before the interpreter is installed. That way it isn't encapsulated in MI output. */ - if (!quiet && strcmp (interpreter_p, INTERP_MI1) == 0) + if (!quiet && interpreter_p == INTERP_MI1) { /* Print all the junk at the top, with trailing "..." if we are about to read a symbol file (possibly slowly). */ @@ -1147,7 +1141,7 @@ captured_main_1 (struct captured_main_args *context) /* Install the default UI. All the interpreters should have had a look at things by now. Initialize the default interpreter. */ - set_top_level_interpreter (interpreter_p); + set_top_level_interpreter (interpreter_p.c_str ()); /* FIXME: cagney/2003-02-03: The big hack (part 2 of 2) that lets GDB retain the old MI1 interpreter startup behavior. Output the diff --git a/gdb/main.h b/gdb/main.h index 60b3569438e..7cdd93f3420 100644 --- a/gdb/main.h +++ b/gdb/main.h @@ -36,7 +36,7 @@ extern int batch_silent; extern int batch_flag; /* * The name of the interpreter if specified on the command line. */ -extern char *interpreter_p; +extern std::string interpreter_p; /* From mingw-hdep.c, used by main.c. */ diff --git a/gdb/tui/tui-interp.c b/gdb/tui/tui-interp.c index e867441afb0..b4faede8ce6 100644 --- a/gdb/tui/tui-interp.c +++ b/gdb/tui/tui-interp.c @@ -343,14 +343,11 @@ _initialize_tui_interp () { interp_factory_register (INTERP_TUI, tui_interp_factory); - if (interpreter_p && strcmp (interpreter_p, INTERP_TUI) == 0) + if (interpreter_p == INTERP_TUI) tui_start_enabled = true; - if (interpreter_p && strcmp (interpreter_p, INTERP_CONSOLE) == 0) - { - xfree (interpreter_p); - interpreter_p = xstrdup (INTERP_TUI); - } + if (interpreter_p == INTERP_CONSOLE) + interpreter_p = INTERP_TUI; /* If changing this, remember to update cli-interp.c as well. */ gdb::observers::normal_stop.attach (tui_on_normal_stop, "tui-interp"); -- 2.34.1