From: Peter Krempa Date: Mon, 3 Feb 2020 12:21:42 +0000 (+0100) Subject: virStorageSourceParseBackingJSON: Move deflattening of json: URIs out of recursion X-Git-Tag: v6.1.0-rc1~177 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aadb34be3428a5e467289709290b536ae6bf5d2a;p=thirdparty%2Flibvirt.git virStorageSourceParseBackingJSON: Move deflattening of json: URIs out of recursion Originally virStorageSourceParseBackingJSON didn't recurse, but when the 'raw' driver support was added we need to parse it's information which contains nested 'file' object. Since the deflattening helper recurses already there's no need to call it again. Move it one level up to the entry point. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c index bdf82b04bb..fd0069a4fa 100644 --- a/src/util/virstoragefile.c +++ b/src/util/virstoragefile.c @@ -3600,15 +3600,11 @@ virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src, virJSONValuePtr json, const char *jsonstr) { - g_autoptr(virJSONValue) deflattened = NULL; virJSONValuePtr file; const char *drvname; size_t i; - if (!(deflattened = virJSONValueObjectDeflatten(json))) - return -1; - - if (!(file = virJSONValueObjectGetObject(deflattened, "file"))) { + if (!(file = virJSONValueObjectGetObject(json, "file"))) { virReportError(VIR_ERR_INVALID_ARG, _("JSON backing volume definition '%s' lacks 'file' object"), jsonstr); @@ -3639,11 +3635,15 @@ virStorageSourceParseBackingJSON(virStorageSourcePtr src, const char *json) { g_autoptr(virJSONValue) root = NULL; + g_autoptr(virJSONValue) deflattened = NULL; if (!(root = virJSONValueFromString(json))) return -1; - return virStorageSourceParseBackingJSONInternal(src, root, json); + if (!(deflattened = virJSONValueObjectDeflatten(root))) + return -1; + + return virStorageSourceParseBackingJSONInternal(src, deflattened, json); }