From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:49985) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WgBcL-0000pr-FJ for qemu-devel@nongnu.org; Fri, 02 May 2014 07:27:07 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1WgBcC-0007Xu-D8 for qemu-devel@nongnu.org; Fri, 02 May 2014 07:27:01 -0400 Received: from mx1.redhat.com ([209.132.183.28]:16402) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1WgBcC-0007XY-5u for qemu-devel@nongnu.org; Fri, 02 May 2014 07:26:52 -0400 From: Markus Armbruster Date: Fri, 2 May 2014 13:26:40 +0200 Message-Id: <1399030002-27222-13-git-send-email-armbru@redhat.com> In-Reply-To: <1399030002-27222-1-git-send-email-armbru@redhat.com> References: <1399030002-27222-1-git-send-email-armbru@redhat.com> Subject: [Qemu-devel] [PATCH v3 12/14] qemu-option: Clean up fragile use of error_is_set() List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: pbonzini@redhat.com, mdroth@linux.vnet.ibm.com, lcapitulino@redhat.com Using error_is_set(ERRP) to find out whether to bail out due to previous error is either wrong, fragile, or unnecessarily opaque. It's wrong when ERRP may be null, because errors go undetected when it is. It's fragile when proving ERRP non-null involves a non-local argument. Else, it's unnecessarily opaque (see commit 84d18f0). The error_is_set(state->errp) in qemu_opts_from_qdict_1() is merely fragile, because the callers never pass state argument with null state->errp. Make the code more robust and more obviously correct: test *state->errp directly. Signed-off-by: Markus Armbruster Reviewed-by: Eric Blake --- util/qemu-option.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/util/qemu-option.c b/util/qemu-option.c index 8bbc3ad..324e4c5 100644 --- a/util/qemu-option.c +++ b/util/qemu-option.c @@ -1036,7 +1036,7 @@ static void qemu_opts_from_qdict_1(const char *key, QObject *obj, void *opaque) const char *value; int n; - if (!strcmp(key, "id") || error_is_set(state->errp)) { + if (!strcmp(key, "id") || *state->errp) { return; } -- 1.8.1.4