Now that the JSON deflattener is working sanely we can always attempt
the deflattening so that we can then parse the tree as expected.
---
src/util/virstoragefile.c | 22 ++++++++++------------
1 file changed, 10 insertions(+), 12 deletions(-)
diff --git a/src/util/virstoragefile.c b/src/util/virstoragefile.c
index d24502fbf..f3dc860ae 100644
--- a/src/util/virstoragefile.c
+++ b/src/util/virstoragefile.c
@@ -3249,24 +3249,22 @@ static int
virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
virJSONValuePtr json)
{
- virJSONValuePtr fixedroot = NULL;
+ virJSONValuePtr deflattened = NULL;
virJSONValuePtr file;
const char *drvname;
char *str = NULL;
size_t i;
int ret = -1;
- if (!(file = virJSONValueObjectGetObject(json, "file"))) {
- if (!(fixedroot = virJSONValueObjectDeflatten(json)))
- goto cleanup;
+ if (!(deflattened = virJSONValueObjectDeflatten(json)))
+ goto cleanup;
- if (!(file = virJSONValueObjectGetObject(fixedroot, "file"))) {
- str = virJSONValueToString(json, false);
- virReportError(VIR_ERR_INVALID_ARG,
- _("JSON backing volume defintion '%s' lacks 'file'
object"),
- str);
- goto cleanup;
- }
+ if (!(file = virJSONValueObjectGetObject(deflattened, "file"))) {
+ str = virJSONValueToString(json, false);
+ virReportError(VIR_ERR_INVALID_ARG,
+ _("JSON backing volume defintion '%s' lacks 'file'
object"),
+ str);
+ goto cleanup;
}
if (!(drvname = virJSONValueObjectGetString(file, "driver"))) {
@@ -3290,7 +3288,7 @@ virStorageSourceParseBackingJSONInternal(virStorageSourcePtr src,
cleanup:
VIR_FREE(str);
- virJSONValueFree(fixedroot);
+ virJSONValueFree(deflattened);
return ret;
}
--
2.12.2