]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virJSONValueObjectDeflattenWorker: Refactor cleanup
authorPeter Krempa <pkrempa@redhat.com>
Wed, 18 Mar 2020 15:38:16 +0000 (16:38 +0100)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 20 Mar 2020 08:47:16 +0000 (09:47 +0100)
Use automatic memory handling to remove the cleanup section.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
src/util/virjson.c

index 2d7368b0b640087e982172bc9c918307f7530d54..f308927fa0158060c9aaf9eef4917ba216a24129 100644 (file)
@@ -2055,11 +2055,10 @@ virJSONValueObjectDeflattenWorker(const char *key,
                                   void *opaque)
 {
     virJSONValuePtr retobj = opaque;
-    virJSONValuePtr newval = NULL;
+    g_autoptr(virJSONValue) newval = NULL;
     virJSONValuePtr existobj;
-    char **tokens = NULL;
+    VIR_AUTOSTRINGLIST tokens = NULL;
     size_t ntokens = 0;
-    int ret = -1;
 
     /* non-nested keys only need to be copied */
     if (!strchr(key, '.')) {
@@ -2075,46 +2074,42 @@ virJSONValueObjectDeflattenWorker(const char *key,
         if (virJSONValueObjectHasKey(retobj, key)) {
             virReportError(VIR_ERR_INVALID_ARG,
                            _("can't deflatten colliding key '%s'"), key);
-            goto cleanup;
+            return -1;
         }
 
         if (virJSONValueObjectAppend(retobj, key, newval) < 0)
-            goto cleanup;
+            return -1;
+
+        newval = NULL;
 
         return 0;
     }
 
     if (!(tokens = virStringSplitCount(key, ".", 2, &ntokens)))
-        goto cleanup;
+        return -1;
 
     if (ntokens != 2) {
         virReportError(VIR_ERR_INVALID_ARG,
                        _("invalid nested value key '%s'"), key);
-        goto cleanup;
+        return -1;
     }
 
     if (!(existobj = virJSONValueObjectGet(retobj, tokens[0]))) {
         existobj = virJSONValueNewObject();
 
         if (virJSONValueObjectAppend(retobj, tokens[0], existobj) < 0)
-            goto cleanup;
+            return -1;
 
     } else {
         if (!virJSONValueIsObject(existobj)) {
             virReportError(VIR_ERR_INVALID_ARG, "%s",
                            _("mixing nested objects and values is forbidden in "
                              "JSON deflattening"));
-            goto cleanup;
+            return -1;
         }
     }
 
-    ret = virJSONValueObjectDeflattenWorker(tokens[1], value, existobj);
-
- cleanup:
-    virStringListFreeCount(tokens, ntokens);
-    virJSONValueFree(newval);
-
-    return ret;
+    return virJSONValueObjectDeflattenWorker(tokens[1], value, existobj);
 }