static int
virJSONValueObjectInsert(virJSONValuePtr object,
const char *key,
- virJSONValuePtr value,
+ virJSONValuePtr *value,
bool prepend)
{
- virJSONObjectPair pair = { NULL, value };
+ virJSONObjectPair pair = { NULL, *value };
int ret = -1;
if (object->type != VIR_JSON_TYPE_OBJECT) {
object->data.object.npairs, pair);
}
+ if (ret == 0)
+ *value = NULL;
+
VIR_FREE(pair.key);
return ret;
}
const char *key,
virJSONValuePtr value)
{
- return virJSONValueObjectInsert(object, key, value, false);
+ return virJSONValueObjectInsert(object, key, &value, false);
}
virJSONValuePtr jvalue = virJSONValueNewString(value);
if (!jvalue)
return -1;
- if (virJSONValueObjectInsert(object, key, jvalue, prepend) < 0) {
- virJSONValueFree(jvalue);
+ if (virJSONValueObjectInsert(object, key, &jvalue, prepend) < 0)
return -1;
- }
return 0;
}