From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:55458) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpUc9-0006tN-He for qemu-devel@nongnu.org; Fri, 23 Oct 2015 01:10:06 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZpUc7-0003Cg-4q for qemu-devel@nongnu.org; Fri, 23 Oct 2015 01:10:05 -0400 Received: from mx1.redhat.com ([209.132.183.28]:45220) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZpUc7-0003CQ-0D for qemu-devel@nongnu.org; Fri, 23 Oct 2015 01:10:03 -0400 From: Eric Blake Date: Thu, 22 Oct 2015 23:09:36 -0600 Message-Id: <1445576998-2921-4-git-send-email-eblake@redhat.com> In-Reply-To: <1445576998-2921-1-git-send-email-eblake@redhat.com> References: <1445576998-2921-1-git-send-email-eblake@redhat.com> Subject: [Qemu-devel] [PATCH v10 03/25] qapi: More robust conditions for when labels are needed List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: armbru@redhat.com, Michael Roth We were using regular expressions to see if ret included any earlier text that emitted a 'goto out;' line, to decide whether we needed to output an 'out:' label. But this is fragile, if the ret text can possibly combine more than one generated function body, where the first function used a goto but the second does not. Change the code to just check for the known conditions which cause an error check to be needed. Besides, it's slightly more efficient to use plain checks than regular expression searching. No change to generated code. Signed-off-by: Eric Blake --- v10: new patch, split in part from 6/17 --- scripts/qapi-commands.py | 2 +- scripts/qapi-visit.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/qapi-commands.py b/scripts/qapi-commands.py index 43a893b..d6a4bf4 100644 --- a/scripts/qapi-commands.py +++ b/scripts/qapi-commands.py @@ -175,7 +175,7 @@ def gen_marshal(name, arg_type, ret_type): ret += gen_marshal_input_visit(arg_type) ret += gen_call(name, arg_type, ret_type) - if re.search('^ *goto out;', ret, re.MULTILINE): + if (arg_type and arg_type.members) or ret_type: ret += mcgen(''' out: diff --git a/scripts/qapi-visit.py b/scripts/qapi-visit.py index d0759d7..e878018 100644 --- a/scripts/qapi-visit.py +++ b/scripts/qapi-visit.py @@ -87,7 +87,7 @@ static void visit_type_%(c_name)s_fields(Visitor *v, %(c_name)s **obj, Error **e ret += gen_visit_fields(members, prefix='(*obj)->') - if re.search('^ *goto out;', ret, re.MULTILINE): + if base or members: ret += mcgen(''' out: -- 2.4.3