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@xxxxxxxxxx> --- 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