From 72613b18ac91add555688acc109f4171bdef4061 Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 9 Apr 2015 11:26:43 +0200 Subject: [PATCH] qemu: monitor: json: Refactor error code class checker Split out the function that checks the actual error class string into a separate helper as it will be useful later and refactor qemuMonitorJSONHasError to return bool type and remove few useless checks. Basically virJSONValueObjectHasKey are useless here since the next call to virJSONValueObjectGet is checking the return value again (which can't fail at that point). By removing the first check we save a function call. --- src/qemu/qemu_monitor_json.c | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 80754f2693..752250b22f 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -400,31 +400,27 @@ qemuMonitorJSONCheckError(virJSONValuePtr cmd, } -static int +static bool +qemuMonitorJSONErrorIsClass(virJSONValuePtr error, + const char *klass) +{ + return STREQ_NULLABLE(virJSONValueObjectGetString(error, "class"), klass); +} + + +static bool qemuMonitorJSONHasError(virJSONValuePtr reply, const char *klass) { virJSONValuePtr error; - const char *thisklass; - if (!virJSONValueObjectHasKey(reply, "error")) - return 0; + if (!(error = virJSONValueObjectGet(reply, "error"))) + return false; - error = virJSONValueObjectGet(reply, "error"); - if (!error) - return 0; - - if (!virJSONValueObjectHasKey(error, "class")) - return 0; - - thisklass = virJSONValueObjectGetString(error, "class"); - - if (!thisklass) - return 0; - - return STREQ(klass, thisklass); + return qemuMonitorJSONErrorIsClass(error, klass); } + /* Top-level commands and nested transaction list elements share a * common structure for everything except the dictionary names. */ static virJSONValuePtr ATTRIBUTE_SENTINEL