From: Peter Krempa Date: Fri, 12 Feb 2021 15:26:09 +0000 (+0100) Subject: virJSONParserInsertValue: Take double pointer for @value X-Git-Tag: v7.1.0-rc1~6 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8298a5bd69eaec25626628d5f407374449240033;p=thirdparty%2Flibvirt.git virJSONParserInsertValue: Take double pointer for @value The function calls virJSONValueObjectAppend/virJSONValueArrayAppend, so by taking a double pointer we can drop the pointer clearing from callers. Signed-off-by: Peter Krempa Reviewed-by: Michal Privoznik --- diff --git a/src/util/virjson.c b/src/util/virjson.c index 01161f4f32..e74b9fca4f 100644 --- a/src/util/virjson.c +++ b/src/util/virjson.c @@ -1549,10 +1549,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) { @@ -1571,7 +1571,7 @@ virJSONParserInsertValue(virJSONParserPtr parser, if (virJSONValueObjectAppend(state->value, state->key, - &value) < 0) + value) < 0) return -1; VIR_FREE(state->key); @@ -1584,7 +1584,7 @@ virJSONParserInsertValue(virJSONParserPtr parser, } if (virJSONValueArrayAppend(state->value, - &value) < 0) + value) < 0) return -1; } break; @@ -1606,9 +1606,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; } @@ -1623,9 +1622,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; } @@ -1641,9 +1639,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; } @@ -1660,9 +1657,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; } @@ -1698,9 +1694,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) { @@ -1747,9 +1742,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)