
On 11/20/20 7:09 PM, marcandre.lureau@redhat.com wrote:
From: Marc-André Lureau <marcandre.lureau@redhat.com>
There might be more potential users around, I haven't looked thoroughly.
Quick git grep showed two more: qemuAgentSSHGetAuthorizedKeys() and qemuMonitorJSONGetStringListProperty(). But that can be done in a separate patch.
Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> --- src/qemu/qemu_monitor_json.c | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-)
diff --git a/src/qemu/qemu_monitor_json.c b/src/qemu/qemu_monitor_json.c index 723bdb4426..3588a0c426 100644 --- a/src/qemu/qemu_monitor_json.c +++ b/src/qemu/qemu_monitor_json.c @@ -7533,10 +7533,7 @@ qemuMonitorJSONGetStringArray(qemuMonitorPtr mon, const char *qmpCmd, int ret = -1; virJSONValuePtr cmd; virJSONValuePtr reply = NULL; - virJSONValuePtr data; - char **list = NULL; - size_t n = 0; - size_t i; + g_auto(GStrv) list = NULL;
*array = NULL;
@@ -7554,32 +7551,13 @@ qemuMonitorJSONGetStringArray(qemuMonitorPtr mon, const char *qmpCmd, if (qemuMonitorJSONCheckReply(cmd, reply, VIR_JSON_TYPE_ARRAY) < 0) goto cleanup;
- data = virJSONValueObjectGetArray(reply, "return"); - n = virJSONValueArraySize(data); - - /* null-terminated list */ - list = g_new0(char *, n + 1); - - for (i = 0; i < n; i++) { - virJSONValuePtr child = virJSONValueArrayGet(data, i); - const char *tmp; - - if (!(tmp = virJSONValueGetString(child))) { - virReportError(VIR_ERR_INTERNAL_ERROR, - _("%s array element does not contain data"), - qmpCmd); - goto cleanup; - } - - list[i] = g_strdup(tmp); - } - - ret = n; - *array = list; - list = NULL; + list = virJSONValueObjectGetStringArray(reply, "return");
We can ditch the @list variable and assign to *array directly.
+ if (!list) + goto cleanup; + ret = g_strv_length(list); + *array = g_steal_pointer(&list);
cleanup: - g_strfreev(list); virJSONValueFree(cmd); virJSONValueFree(reply); return ret;
How about this squashed in: diff --git c/src/qemu/qemu_monitor_json.c i/src/qemu/qemu_monitor_json.c index 3588a0c426..e7aa6b6ffd 100644 --- c/src/qemu/qemu_monitor_json.c +++ i/src/qemu/qemu_monitor_json.c @@ -7533,7 +7533,6 @@ qemuMonitorJSONGetStringArray(qemuMonitorPtr mon, const char *qmpCmd, int ret = -1; virJSONValuePtr cmd; virJSONValuePtr reply = NULL; - g_auto(GStrv) list = NULL; *array = NULL; @@ -7551,11 +7550,10 @@ qemuMonitorJSONGetStringArray(qemuMonitorPtr mon, const char *qmpCmd, if (qemuMonitorJSONCheckReply(cmd, reply, VIR_JSON_TYPE_ARRAY) < 0) goto cleanup; - list = virJSONValueObjectGetStringArray(reply, "return"); - if (!list) + if (!(*array = virJSONValueObjectGetStringArray(reply, "return"))) goto cleanup; - ret = g_strv_length(list); - *array = g_steal_pointer(&list); + + ret = g_strv_length(*array); cleanup: virJSONValueFree(cmd); Michal