From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 4251 invoked by alias); 20 Jul 2017 17:57:26 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 3520 invoked by uid 89); 20 Jul 2017 17:57:26 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-25.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,KAM_LAZY_DOMAIN_SECURITY,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=ham version=3.3.2 spammy= X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Thu, 20 Jul 2017 17:57:24 +0000 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id 15C21C04B938; Thu, 20 Jul 2017 17:57:23 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 15C21C04B938 Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com Authentication-Results: ext-mx07.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=sergiodj@redhat.com DKIM-Filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 15C21C04B938 Received: from localhost (unused-10-15-17-193.yyz.redhat.com [10.15.17.193]) by smtp.corp.redhat.com (Postfix) with ESMTPS id E0133179E9; Thu, 20 Jul 2017 17:57:22 +0000 (UTC) From: Sergio Durigan Junior To: Tom Tromey Cc: gdb-patches@sourceware.org Subject: Re: [RFA v2 2/4] C++-ify break-catch-throw References: <20170719203225.6714-1-tom@tromey.com> <20170719203225.6714-3-tom@tromey.com> Date: Thu, 20 Jul 2017 17:57:00 -0000 In-Reply-To: <20170719203225.6714-3-tom@tromey.com> (Tom Tromey's message of "Wed, 19 Jul 2017 14:32:23 -0600") Message-ID: <87h8y7kn3x.fsf@redhat.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-IsSubscribed: yes X-SW-Source: 2017-07/txt/msg00306.txt.bz2 On Wednesday, July 19 2017, Tom Tromey wrote: > This changes exception_catchpoint's "exception_rx' member to be a > std::string, and updating the users. > > 2017-06-04 Tom Tromey > > * break-catch-throw.c (struct exception_catchpoint) > : Now a std::string. > (~exception_catchpoint): REmove. > (print_one_detail_exception_catchpoint): Update. > (handle_gnu_v3_exceptions): Change type of except_rx. > (extract_exception_regexp): Return a std::string. > (catch_exception_command_1): Update. > --- > gdb/ChangeLog | 10 ++++++++++ > gdb/break-catch-throw.c | 40 +++++++++++++--------------------------- > 2 files changed, 23 insertions(+), 27 deletions(-) > > diff --git a/gdb/ChangeLog b/gdb/ChangeLog > index 42bde4b..e178fa5 100644 > --- a/gdb/ChangeLog > +++ b/gdb/ChangeLog > @@ -1,5 +1,15 @@ > 2017-06-04 Tom Tromey > > + * break-catch-throw.c (struct exception_catchpoint) > + : Now a std::string. > + (~exception_catchpoint): REmove. > + (print_one_detail_exception_catchpoint): Update. > + (handle_gnu_v3_exceptions): Change type of except_rx. > + (extract_exception_regexp): Return a std::string. > + (catch_exception_command_1): Update. > + > +2017-06-04 Tom Tromey > + > * break-catch-sig.c (gdb_signal_type): Remove typedef. > (struct signal_catchpoint) : Now a > std::vector. > diff --git a/gdb/break-catch-throw.c b/gdb/break-catch-throw.c > index 0074d06..e71a885 100644 > --- a/gdb/break-catch-throw.c > +++ b/gdb/break-catch-throw.c > @@ -76,16 +76,14 @@ static struct breakpoint_ops gnu_v3_exception_catchpoint_ops; > > struct exception_catchpoint : public breakpoint > { > - ~exception_catchpoint () override; > - > /* The kind of exception catchpoint. */ > > enum exception_event_kind kind; > > - /* If non-NULL, an xmalloc'd string holding the source form of the > - regular expression to match against. */ > + /* If not empty, a string holding the source form of the regular > + expression to match against. */ > > - char *exception_rx; > + std::string exception_rx; > > /* If non-NULL, a compiled regular expression which is used to > determine which exceptions to stop on. */ > @@ -140,13 +138,6 @@ classify_exception_breakpoint (struct breakpoint *b) > return cp->kind; > } > > -/* exception_catchpoint destructor. */ > - > -exception_catchpoint::~exception_catchpoint () > -{ > - xfree (this->exception_rx); > -} > - > /* Implement the 'check_status' method. */ > > static void > @@ -319,10 +310,10 @@ print_one_detail_exception_catchpoint (const struct breakpoint *b, > const struct exception_catchpoint *cp > = (const struct exception_catchpoint *) b; > > - if (cp->exception_rx != NULL) > + if (!cp->exception_rx.empty ()) > { > uiout->text (_("\tmatching: ")); > - uiout->field_string ("regexp", cp->exception_rx); > + uiout->field_string ("regexp", cp->exception_rx.c_str ()); > uiout->text ("\n"); > } > } > @@ -371,15 +362,15 @@ print_recreate_exception_catchpoint (struct breakpoint *b, > } > > static void > -handle_gnu_v3_exceptions (int tempflag, char *except_rx, > +handle_gnu_v3_exceptions (int tempflag, std::string &&except_rx, > const char *cond_string, > enum exception_event_kind ex_event, int from_tty) > { > std::unique_ptr pattern; > > - if (except_rx != NULL) > + if (!except_rx.empty ()) > { > - pattern.reset (new compiled_regex (except_rx, REG_NOSUB, > + pattern.reset (new compiled_regex (except_rx.c_str (), REG_NOSUB, > _("invalid type-matching regexp"))); > } > > @@ -410,7 +401,7 @@ handle_gnu_v3_exceptions (int tempflag, char *except_rx, > STRING is updated to point to the "if" token, if it exists, or to > the end of the string. */ > > -static char * > +static std::string > extract_exception_regexp (const char **string) > { > const char *start; > @@ -435,8 +426,8 @@ extract_exception_regexp (const char **string) > > *string = last; > if (last_space > start) > - return savestring (start, last_space - start); > - return NULL; > + return std::string (start, last_space - start); > + return std::string (); > } > > /* Deal with "catch catch", "catch throw", and "catch rethrow" > @@ -447,17 +438,14 @@ catch_exception_command_1 (enum exception_event_kind ex_event, > char *arg_entry, > int tempflag, int from_tty) > { > - char *except_rx; > const char *cond_string = NULL; > - struct cleanup *cleanup; > const char *arg = arg_entry; > > if (!arg) > arg = ""; > arg = skip_spaces_const (arg); > > - except_rx = extract_exception_regexp (&arg); > - cleanup = make_cleanup (xfree, except_rx); > + std::string except_rx = extract_exception_regexp (&arg); > > cond_string = ep_parse_optional_if_clause (&arg); > > @@ -469,10 +457,8 @@ catch_exception_command_1 (enum exception_event_kind ex_event, > && ex_event != EX_EVENT_RETHROW) > error (_("Unsupported or unknown exception event; cannot catch it")); > > - handle_gnu_v3_exceptions (tempflag, except_rx, cond_string, > + handle_gnu_v3_exceptions (tempflag, std::move (except_rx), cond_string, > ex_event, from_tty); > - > - discard_cleanups (cleanup); > } > > /* Implementation of "catch catch" command. */ > -- > 2.9.3 LGTM. -- Sergio GPG key ID: 237A 54B1 0287 28BF 00EF 31F4 D0EB 7628 65FC 5E36 Please send encrypted e-mail if possible http://sergiodj.net/