On 3/29/19 9:33 AM, Peter Krempa wrote:
Use virJSONValueToBuffer so that we can append the command terminator string without copying of the string again. Also avoid a 'strlen' as we can query the buffer use size. Signed-off-by: Peter Krempa <pkrempa@xxxxxxxxxx>
Reviewed-by: Laine Stump <laine@xxxxxxxxx>
--- src/qemu/qemu_monitor_json.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index c7a7e3fa56..8e6c3ccd63 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -277,7 +277,7 @@ qemuMonitorJSONCommandWithFd(qemuMonitorPtr mon, { int ret = -1; qemuMonitorMessage msg; - char *cmdstr = NULL; + VIR_AUTOCLEAN(virBuffer) cmdbuf = VIR_BUFFER_INITIALIZER; char *id = NULL; *reply = NULL; @@ -294,11 +294,15 @@ qemuMonitorJSONCommandWithFd(qemuMonitorPtr mon, } } - if (!(cmdstr = virJSONValueToString(cmd, false))) + if (virJSONValueToBuffer(cmd, &cmdbuf, false) < 0) goto cleanup; - if (virAsprintf(&msg.txBuffer, "%s\r\n", cmdstr) < 0) + virBufferAddLit(&cmdbuf, "\r\n"); + + if (virBufferCheckError(&cmdbuf) < 0) goto cleanup; - msg.txLength = strlen(msg.txBuffer); + + msg.txLength = virBufferUse(&cmdbuf); + msg.txBuffer = virBufferContentAndReset(&cmdbuf); msg.txFD = scm_fd; ret = qemuMonitorSend(mon, &msg); @@ -315,7 +319,6 @@ qemuMonitorJSONCommandWithFd(qemuMonitorPtr mon, cleanup: VIR_FREE(id); - VIR_FREE(cmdstr); VIR_FREE(msg.txBuffer); return ret;
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list