mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-03-07 17:28:15 +00:00
virJSONValueObjectInsert: Clear @value on successful insertion
The function takes ownership of @value on success so the proper semantics will be to clear out the @value pointer. Convert @value to a double pointer to do this. Signed-off-by: Peter Krempa <pkrempa@redhat.com> Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
parent
a3f237cb00
commit
b116e715a8
@ -577,10 +577,10 @@ virJSONValueNewObject(void)
|
|||||||
static int
|
static int
|
||||||
virJSONValueObjectInsert(virJSONValuePtr object,
|
virJSONValueObjectInsert(virJSONValuePtr object,
|
||||||
const char *key,
|
const char *key,
|
||||||
virJSONValuePtr value,
|
virJSONValuePtr *value,
|
||||||
bool prepend)
|
bool prepend)
|
||||||
{
|
{
|
||||||
virJSONObjectPair pair = { NULL, value };
|
virJSONObjectPair pair = { NULL, *value };
|
||||||
int ret = -1;
|
int ret = -1;
|
||||||
|
|
||||||
if (object->type != VIR_JSON_TYPE_OBJECT) {
|
if (object->type != VIR_JSON_TYPE_OBJECT) {
|
||||||
@ -604,6 +604,9 @@ virJSONValueObjectInsert(virJSONValuePtr object,
|
|||||||
object->data.object.npairs, pair);
|
object->data.object.npairs, pair);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ret == 0)
|
||||||
|
*value = NULL;
|
||||||
|
|
||||||
VIR_FREE(pair.key);
|
VIR_FREE(pair.key);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -614,7 +617,7 @@ virJSONValueObjectAppend(virJSONValuePtr object,
|
|||||||
const char *key,
|
const char *key,
|
||||||
virJSONValuePtr value)
|
virJSONValuePtr value)
|
||||||
{
|
{
|
||||||
return virJSONValueObjectInsert(object, key, value, false);
|
return virJSONValueObjectInsert(object, key, &value, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -627,10 +630,8 @@ virJSONValueObjectInsertString(virJSONValuePtr object,
|
|||||||
virJSONValuePtr jvalue = virJSONValueNewString(value);
|
virJSONValuePtr jvalue = virJSONValueNewString(value);
|
||||||
if (!jvalue)
|
if (!jvalue)
|
||||||
return -1;
|
return -1;
|
||||||
if (virJSONValueObjectInsert(object, key, jvalue, prepend) < 0) {
|
if (virJSONValueObjectInsert(object, key, &jvalue, prepend) < 0)
|
||||||
virJSONValueFree(jvalue);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user