From 95b3a8c8a82a34ca874ac0d4a9bbbdb38034acf3 Mon Sep 17 00:00:00 2001 From: Eric Blake Date: Wed, 13 Jan 2021 16:10:13 -0600 Subject: qapi: More complex uses of QAPI_LIST_APPEND These cases require a bit more thought to review; in each case, the code was appending to a list, but not with a FOOList **tail variable. Signed-off-by: Eric Blake Reviewed-by: Vladimir Sementsov-Ogievskiy Message-Id: <20210113221013.390592-6-eblake@redhat.com> Reviewed-by: Markus Armbruster [Flawed change to qmp_guest_network_get_interfaces() dropped] Signed-off-by: Markus Armbruster --- block/gluster.c | 13 +++---------- block/qapi.c | 14 ++------------ 2 files changed, 5 insertions(+), 22 deletions(-) (limited to 'block') diff --git a/block/gluster.c b/block/gluster.c index 1f8699b938..e8ee14c8e9 100644 --- a/block/gluster.c +++ b/block/gluster.c @@ -514,7 +514,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf, { QemuOpts *opts; SocketAddress *gsconf = NULL; - SocketAddressList *curr = NULL; + SocketAddressList **tail; QDict *backing_options = NULL; Error *local_err = NULL; char *str = NULL; @@ -547,6 +547,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf, } gconf->path = g_strdup(ptr); qemu_opts_del(opts); + tail = &gconf->server; for (i = 0; i < num_servers; i++) { str = g_strdup_printf(GLUSTER_OPT_SERVER_PATTERN"%d.", i); @@ -655,15 +656,7 @@ static int qemu_gluster_parse_json(BlockdevOptionsGluster *gconf, qemu_opts_del(opts); } - if (gconf->server == NULL) { - gconf->server = g_new0(SocketAddressList, 1); - gconf->server->value = gsconf; - curr = gconf->server; - } else { - curr->next = g_new0(SocketAddressList, 1); - curr->next->value = gsconf; - curr = curr->next; - } + QAPI_LIST_APPEND(tail, gsconf); gsconf = NULL; qobject_unref(backing_options); diff --git a/block/qapi.c b/block/qapi.c index 3a1186fdcc..0a96099e36 100644 --- a/block/qapi.c +++ b/block/qapi.c @@ -198,7 +198,7 @@ int bdrv_query_snapshot_info_list(BlockDriverState *bs, { int i, sn_count; QEMUSnapshotInfo *sn_tab = NULL; - SnapshotInfoList *info_list, *cur_item = NULL, *head = NULL; + SnapshotInfoList *head = NULL, **tail = &head; SnapshotInfo *info; sn_count = bdrv_snapshot_list(bs, &sn_tab); @@ -233,17 +233,7 @@ int bdrv_query_snapshot_info_list(BlockDriverState *bs, info->icount = sn_tab[i].icount; info->has_icount = sn_tab[i].icount != -1ULL; - info_list = g_new0(SnapshotInfoList, 1); - info_list->value = info; - - /* XXX: waiting for the qapi to support qemu-queue.h types */ - if (!cur_item) { - head = cur_item = info_list; - } else { - cur_item->next = info_list; - cur_item = info_list; - } - + QAPI_LIST_APPEND(tail, info); } g_free(sn_tab); -- cgit v1.2.3-55-g7522