Pass in the double pointer from the wrappers directly to
virJSONValueObjectAddVArgs, which will allow us to directly allocate the
new objects inside the function.
Signed-off-by: Peter Krempa <pkrempa(a)redhat.com>
---
src/qemu/qemu_monitor.c | 2 +-
src/util/virjson.c | 9 +++++----
src/util/virjson.h | 2 +-
3 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/src/qemu/qemu_monitor.c b/src/qemu/qemu_monitor.c
index 810dac209d..398bef2e96 100644
--- a/src/qemu/qemu_monitor.c
+++ b/src/qemu/qemu_monitor.c
@@ -2889,7 +2889,7 @@ qemuMonitorCreateObjectProps(virJSONValue **propsret,
va_start(args, alias);
- rc = virJSONValueObjectAddVArgs(props, args);
+ rc = virJSONValueObjectAddVArgs(&props, args);
va_end(args);
diff --git a/src/util/virjson.c b/src/util/virjson.c
index 446b675309..bd71b84960 100644
--- a/src/util/virjson.c
+++ b/src/util/virjson.c
@@ -103,7 +103,7 @@ virJSONValueGetType(const virJSONValue *value)
/**
* virJSONValueObjectAddVArgs:
- * @obj: JSON object to add the values to
+ * @objptr: pointer to a pointer to a JSON object to add the values to
* @args: a key-value argument pairs, terminated by NULL
*
* Adds the key-value pairs supplied as variable argument list to @obj.
@@ -152,9 +152,10 @@ virJSONValueGetType(const virJSONValue *value)
* in case of no error but nothing was filled.
*/
int
-virJSONValueObjectAddVArgs(virJSONValue *obj,
+virJSONValueObjectAddVArgs(virJSONValue **objptr,
va_list args)
{
+ virJSONValue *obj = *objptr;
char type;
char *key;
int rc;
@@ -354,7 +355,7 @@ virJSONValueObjectAdd(virJSONValue **objptr, ...)
int ret;
va_start(args, objptr);
- ret = virJSONValueObjectAddVArgs(*objptr, args);
+ ret = virJSONValueObjectAddVArgs(objptr, args);
va_end(args);
return ret;
@@ -370,7 +371,7 @@ virJSONValueObjectCreateVArgs(virJSONValue **obj,
*obj = virJSONValueNewObject();
/* free the object on error, or if no value objects were added */
- if ((ret = virJSONValueObjectAddVArgs(*obj, args)) <= 0) {
+ if ((ret = virJSONValueObjectAddVArgs(obj, args)) <= 0) {
virJSONValueFree(*obj);
*obj = NULL;
}
diff --git a/src/util/virjson.h b/src/util/virjson.h
index c5d969f0fc..0d8dad754d 100644
--- a/src/util/virjson.h
+++ b/src/util/virjson.h
@@ -50,7 +50,7 @@ int virJSONValueObjectCreateVArgs(virJSONValue **obj, va_list args)
ATTRIBUTE_NONNULL(1);
int virJSONValueObjectAdd(virJSONValue **obj, ...)
ATTRIBUTE_NONNULL(1) G_GNUC_NULL_TERMINATED;
-int virJSONValueObjectAddVArgs(virJSONValue *obj, va_list args)
+int virJSONValueObjectAddVArgs(virJSONValue **objptr, va_list args)
ATTRIBUTE_NONNULL(1);
--
2.31.1