[PATCH 13/25] virJSONValue(Array|Object)Append*: Simplify handling of appended object

Peter Krempa pkrempa at redhat.com
Fri Feb 12 17:55:26 UTC 2021


Use g_autofree for the pointer of the added object and remove the NULL
checks for values returned by virJSONValueNew* (except
virJSONValueNewNumberDouble) since they can't fail nowadays.

Signed-off-by: Peter Krempa <pkrempa at redhat.com>
---
 src/util/virjson.c | 88 ++++++++++++++++++++++------------------------
 1 file changed, 42 insertions(+), 46 deletions(-)

diff --git a/src/util/virjson.c b/src/util/virjson.c
index d794eed17f..adf1cfbcbc 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -676,13 +676,12 @@ virJSONValueObjectAppendNumberInt(virJSONValuePtr object,
                                   const char *key,
                                   int number)
 {
-    virJSONValuePtr jvalue = virJSONValueNewNumberInt(number);
-    if (!jvalue)
-        return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewNumberInt(number);
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -692,13 +691,12 @@ virJSONValueObjectAppendNumberUint(virJSONValuePtr object,
                                    const char *key,
                                    unsigned int number)
 {
-    virJSONValuePtr jvalue = virJSONValueNewNumberUint(number);
-    if (!jvalue)
-        return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewNumberUint(number);
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -708,13 +706,12 @@ virJSONValueObjectAppendNumberLong(virJSONValuePtr object,
                                    const char *key,
                                    long long number)
 {
-    virJSONValuePtr jvalue = virJSONValueNewNumberLong(number);
-    if (!jvalue)
-        return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewNumberLong(number);
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -724,13 +721,12 @@ virJSONValueObjectAppendNumberUlong(virJSONValuePtr object,
                                     const char *key,
                                     unsigned long long number)
 {
-    virJSONValuePtr jvalue = virJSONValueNewNumberUlong(number);
-    if (!jvalue)
-        return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewNumberUlong(number);
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -740,13 +736,16 @@ virJSONValueObjectAppendNumberDouble(virJSONValuePtr object,
                                      const char *key,
                                      double number)
 {
-    virJSONValuePtr jvalue = virJSONValueNewNumberDouble(number);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewNumberDouble(number);
+
+    /* virJSONValueNewNumberDouble may return NULL if locale setting fails */
     if (!jvalue)
         return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -756,13 +755,12 @@ virJSONValueObjectAppendBoolean(virJSONValuePtr object,
                                 const char *key,
                                 int boolean_)
 {
-    virJSONValuePtr jvalue = virJSONValueNewBoolean(boolean_);
-    if (!jvalue)
-        return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewBoolean(boolean_);
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -771,13 +769,12 @@ int
 virJSONValueObjectAppendNull(virJSONValuePtr object,
                              const char *key)
 {
-    virJSONValuePtr jvalue = virJSONValueNewNull();
-    if (!jvalue)
-        return -1;
-    if (virJSONValueObjectAppend(object, key, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewNull();
+
+    if (virJSONValueObjectAppend(object, key, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

@@ -806,13 +803,12 @@ int
 virJSONValueArrayAppendString(virJSONValuePtr object,
                               const char *value)
 {
-    virJSONValuePtr jvalue = virJSONValueNewString(value);
-    if (!jvalue)
-        return -1;
-    if (virJSONValueArrayAppend(object, jvalue) < 0) {
-        virJSONValueFree(jvalue);
+    g_autoptr(virJSONValue) jvalue = virJSONValueNewString(value);
+
+    if (virJSONValueArrayAppend(object, jvalue) < 0)
         return -1;
-    }
+    jvalue = NULL;
+
     return 0;
 }

-- 
2.29.2




More information about the libvir-list mailing list