From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 18750 invoked by alias); 9 May 2013 18:51:23 -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 18727 invoked by uid 89); 9 May 2013 18:51:23 -0000 X-Spam-SWARE-Status: No, score=-7.7 required=5.0 tests=AWL,BAYES_00,KHOP_THREADED,RCVD_IN_HOSTKARMA_W,RCVD_IN_HOSTKARMA_WL,RP_MATCHES_RCVD,SPF_HELO_PASS,SPF_PASS autolearn=ham version=3.3.1 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.84/v0.84-167-ge50287c) with ESMTP; Thu, 09 May 2013 18:51:22 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r49IpLbT011680 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK) for ; Thu, 9 May 2013 14:51:21 -0400 Received: from barimba (ovpn-113-133.phx2.redhat.com [10.3.113.133]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id r49IpJch019213 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Thu, 9 May 2013 14:51:20 -0400 From: Tom Tromey From: Tom Tromey To: gdb-patches@sourceware.org Subject: [PATCH 14/40] fix two buglets in breakpoint.c In-Reply-To: References: Message-Id: <9950c2e4c9891c1b716d6c6d32107ddd7e97c5a5.1368124285.git.tromey@redhat.com> Date: Thu, 09 May 2013 18:51:00 -0000 MIME-Version: 1.0 Content-Type: text/plain X-SW-Source: 2013-05/txt/msg00328.txt.bz2 First, output_thread_groups leaks a cleanup along one return path. Second, parse_cmd_to_aexpr could return without running its cleanups, if there was an exception in a TRY_CATCH. * breakpoint.c (output_thread_groups): Call do_cleanups along all return paths. (parse_cmd_to_aexpr): Call do_cleanups earlier. --- gdb/breakpoint.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index f4f9325..56398a0 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2248,6 +2248,8 @@ parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd) fpieces, nargs, argvec); } + do_cleanups (old_cleanups); + if (ex.reason < 0) { /* If we got here, it means the command could not be parsed to a valid @@ -2256,8 +2258,6 @@ parse_cmd_to_aexpr (CORE_ADDR scope, char *cmd) return NULL; } - do_cleanups (old_cleanups); - /* We have a valid agent expression, return it. */ return aexpr; } @@ -5814,7 +5814,10 @@ output_thread_groups (struct ui_out *uiout, /* For backward compatibility, don't display inferiors in CLI unless there are several. Always display them for MI. */ if (!is_mi && mi_only) - return; + { + do_cleanups (back_to); + return; + } for (i = 0; VEC_iterate (int, inf_num, i, inf); ++i) { -- 1.8.1.4