[PATCH 25/25] virJSONParserInsertValue: Take double pointer for @value

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


The function calls virJSONValueObjectAppend/virJSONValueArrayAppend, so
by taking a double pointer we can drop the pointer clearing from
callers.

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

diff --git a/src/util/virjson.c b/src/util/virjson.c
index b21b1fc63f..b952ad500d 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -1550,10 +1550,10 @@ virJSONValueCopy(const virJSONValue *in)
 #if WITH_YAJL
 static int
 virJSONParserInsertValue(virJSONParserPtr parser,
-                         virJSONValuePtr value)
+                         virJSONValuePtr *value)
 {
     if (!parser->head) {
-        parser->head = value;
+        parser->head = g_steal_pointer(value);
     } else {
         virJSONParserStatePtr state;
         if (!parser->nstate) {
@@ -1572,7 +1572,7 @@ virJSONParserInsertValue(virJSONParserPtr parser,

             if (virJSONValueObjectAppend(state->value,
                                          state->key,
-                                         &value) < 0)
+                                         value) < 0)
                 return -1;

             VIR_FREE(state->key);
@@ -1585,7 +1585,7 @@ virJSONParserInsertValue(virJSONParserPtr parser,
             }

             if (virJSONValueArrayAppend(state->value,
-                                        &value) < 0)
+                                        value) < 0)
                 return -1;
         }   break;

@@ -1607,9 +1607,8 @@ virJSONParserHandleNull(void *ctx)

     VIR_DEBUG("parser=%p", parser);

-    if (virJSONParserInsertValue(parser, value) < 0)
+    if (virJSONParserInsertValue(parser, &value) < 0)
         return 0;
-    value = NULL;

     return 1;
 }
@@ -1624,9 +1623,8 @@ virJSONParserHandleBoolean(void *ctx,

     VIR_DEBUG("parser=%p boolean=%d", parser, boolean_);

-    if (virJSONParserInsertValue(parser, value) < 0)
+    if (virJSONParserInsertValue(parser, &value) < 0)
         return 0;
-    value = NULL;

     return 1;
 }
@@ -1642,9 +1640,8 @@ virJSONParserHandleNumber(void *ctx,

     VIR_DEBUG("parser=%p str=%s", parser, value->data.number);

-    if (virJSONParserInsertValue(parser, value) < 0)
+    if (virJSONParserInsertValue(parser, &value) < 0)
         return 0;
-    value = NULL;

     return 1;
 }
@@ -1661,9 +1658,8 @@ virJSONParserHandleString(void *ctx,

     VIR_DEBUG("parser=%p str=%p", parser, (const char *)stringVal);

-    if (virJSONParserInsertValue(parser, value) < 0)
+    if (virJSONParserInsertValue(parser, &value) < 0)
         return 0;
-    value = NULL;

     return 1;
 }
@@ -1699,9 +1695,8 @@ virJSONParserHandleStartMap(void *ctx)

     VIR_DEBUG("parser=%p", parser);

-    if (virJSONParserInsertValue(parser, value) < 0)
+    if (virJSONParserInsertValue(parser, &value) < 0)
         return 0;
-    value = NULL;

     if (VIR_REALLOC_N(parser->state,
                       parser->nstate + 1) < 0) {
@@ -1748,9 +1743,8 @@ virJSONParserHandleStartArray(void *ctx)

     VIR_DEBUG("parser=%p", parser);

-    if (virJSONParserInsertValue(parser, value) < 0)
+    if (virJSONParserInsertValue(parser, &value) < 0)
         return 0;
-    value = NULL;

     if (VIR_REALLOC_N(parser->state,
                       parser->nstate + 1) < 0)
-- 
2.29.2




More information about the libvir-list mailing list