From patchwork Sun Nov 22 07:20:21 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Mike Frysinger X-Patchwork-Id: 9774 X-Patchwork-Delegate: vapier@gentoo.org Received: (qmail 33377 invoked by alias); 22 Nov 2015 07:20:26 -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 33364 invoked by uid 89); 22 Nov 2015 07:20:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.1 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD, SPF_PASS autolearn=ham version=3.3.2 X-HELO: smtp.gentoo.org Received: from smtp.gentoo.org (HELO smtp.gentoo.org) (140.211.166.183) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Sun, 22 Nov 2015 07:20:24 +0000 Received: from localhost.localdomain (localhost [127.0.0.1]) by smtp.gentoo.org (Postfix) with ESMTP id 172CE3406F3 for ; Sun, 22 Nov 2015 07:20:22 +0000 (UTC) From: Mike Frysinger To: gdb-patches@sourceware.org Subject: [PATCH] sim: sim_do_commandf: fix call to va_end [PR sim/19273] [committed] Date: Sun, 22 Nov 2015 02:20:21 -0500 Message-Id: <1448176821-8425-1-git-send-email-vapier@gentoo.org> X-IsSubscribed: yes Make sure we call va_end even in the error case. --- sim/common/ChangeLog | 6 ++++++ sim/common/sim-utils.c | 9 +++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 464fd80..1b21995 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,5 +1,11 @@ 2015-11-21 Mike Frysinger + PR sim/19273 + * sim-utils.c (sim_do_commandf): Declare ret. Call va_start, + vasprintf, and va_end together. Check ret after va_end call. + +2015-11-21 Mike Frysinger + * sim-types.h (SIM_PRI_TB): Define. (PRI_TW, PRIiTW, PRIxTW): New PRI target word defines. (PRI_TA, PRIiTA, PRIxTA): New PRI target address defines. diff --git a/sim/common/sim-utils.c b/sim/common/sim-utils.c index 63d532d..c6f96a8 100644 --- a/sim/common/sim-utils.c +++ b/sim/common/sim-utils.c @@ -328,15 +328,20 @@ sim_do_commandf (SIM_DESC sd, { va_list ap; char *buf; + int ret; + va_start (ap, fmt); - if (vasprintf (&buf, fmt, ap) < 0) + ret = vasprintf (&buf, fmt, ap); + va_end (ap); + + if (ret < 0) { sim_io_eprintf (sd, "%s: asprintf failed for `%s'\n", STATE_MY_NAME (sd), fmt); return; } + sim_do_command (sd, buf); - va_end (ap); free (buf); }