diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 80754f26937cc0efd9e277751e80c31cf45072b9..752250b22fb13eea99207ed5fb9090b4d85c6245 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; - error = virJSONValueObjectGet(reply, "error"); - if (!error) - return 0; - - if (!virJSONValueObjectHasKey(error, "class")) - return 0; - - thisklass = virJSONValueObjectGetString(error, "class"); + if (!(error = virJSONValueObjectGet(reply, "error"))) + return false; - 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