This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFA 2/2] C++-ify break-catch-throw
- From: Pedro Alves <palves at redhat dot com>
- To: Tom Tromey <tom at tromey dot com>, gdb-patches at sourceware dot org
- Date: Mon, 5 Jun 2017 11:21:24 +0100
- Subject: Re: [RFA 2/2] C++-ify break-catch-throw
- Authentication-results: sourceware.org; auth=none
- Authentication-results: ext-mx01.extmail.prod.ext.phx2.redhat.com; dmarc=none (p=none dis=none) header.from=redhat.com
- Authentication-results: ext-mx01.extmail.prod.ext.phx2.redhat.com; spf=pass smtp.mailfrom=palves at redhat dot com
- Dkim-filter: OpenDKIM Filter v2.11.0 mx1.redhat.com 7913E81253
- Dmarc-filter: OpenDMARC Filter v1.3.2 mx1.redhat.com 7913E81253
- References: <20170604225353.18008-1-tom@tromey.com> <20170604225353.18008-3-tom@tromey.com>
On 06/04/2017 11:53 PM, Tom Tromey wrote:
> @@ -452,17 +450,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);
>
> @@ -474,10 +469,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);
> }
Something looks suspicious to me -- compile_rx_or_error returns with
an installed cleanup that calls regfree, and handle_gnu_v3_exceptions
leaves it installed too.
Thanks,
Pedro Alves