Use virJSONValueObjectAdd and format the string directly via g_strdup_printf. In the end virJSONValueObjectAppendStringPrintf will be removed. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx> --- src/qemu/qemu_command.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/qemu/qemu_command.c b/src/qemu/qemu_command.c index 784003fbf5..420fe4ed0c 100644 --- a/src/qemu/qemu_command.c +++ b/src/qemu/qemu_command.c @@ -10475,22 +10475,24 @@ qemuBuildParallelChrDeviceProps(virDomainChrDef *chr) virJSONValue * qemuBuildChannelGuestfwdNetdevProps(virDomainChrDef *chr) { + g_autofree char *guestfwdstr = NULL; + g_autoptr(virJSONValue) guestfwdstrobj = NULL; g_autoptr(virJSONValue) guestfwdarr = virJSONValueNewArray(); - g_autoptr(virJSONValue) guestfwdstrobj = virJSONValueNewObject(); g_autofree char *addr = NULL; virJSONValue *ret = NULL; if (!(addr = virSocketAddrFormat(chr->target.addr))) return NULL; + guestfwdstr = g_strdup_printf("tcp:%s:%i-chardev:char%s", + addr, + virSocketAddrGetPort(chr->target.addr), + chr->info.alias); + /* this may seem weird, but qemu indeed decided that 'guestfwd' parameter * is an array of objects which have just one member named 'str' which * contains the description */ - if (virJSONValueObjectAppendStringPrintf(guestfwdstrobj, "str", - "tcp:%s:%i-chardev:char%s", - addr, - virSocketAddrGetPort(chr->target.addr), - chr->info.alias) < 0) + if (virJSONValueObjectAdd(&guestfwdstrobj, "s:str", guestfwdstr, NULL) < 0) return NULL; if (virJSONValueArrayAppend(guestfwdarr, &guestfwdstrobj) < 0) -- 2.39.2