Eric Blake <ebl...@redhat.com> writes: > Anywhere we create a list of just one item or by prepending items > (typically because order doesn't matter), we can use the > QAPI_LIST_PREPEND macro. But places where we must keep the list in > order by appending remain open-coded until later patches. > > Note that as a side effect, this also performs a cleanup of two minor > issues in qga/commands-posix.c: the old code was performing > new = g_malloc0(sizeof(*ret)); > which 1) is confusing because you have to verify whether 'new' and > 'ret' are variables with the same type, and 2) would conflict with C++ > compilation (not an actual problem for this file, but makes > copy-and-paste harder). > > Signed-off-by: Eric Blake <ebl...@redhat.com> > Reviewed-by: Markus Armbruster <arm...@redhat.com> > Acked-by: Stefan Hajnoczi <stefa...@redhat.com>
Already in master as commit 54aa3de72e, except for: > diff --git a/hw/core/machine-qmp-cmds.c b/hw/core/machine-qmp-cmds.c > index 87f14140a381..156223a344ed 100644 > --- a/hw/core/machine-qmp-cmds.c > +++ b/hw/core/machine-qmp-cmds.c [...] > @@ -297,41 +293,31 @@ void qmp_set_numa_node(NumaOptions *cmd, Error **errp) > static int query_memdev(Object *obj, void *opaque) > { > MemdevList **list = opaque; > - MemdevList *m = NULL; > + Memdev *m; > QObject *host_nodes; > Visitor *v; > > if (object_dynamic_cast(obj, TYPE_MEMORY_BACKEND)) { > m = g_malloc0(sizeof(*m)); > > - m->value = g_malloc0(sizeof(*m->value)); > + m->id = g_strdup(object_get_canonical_path_component(obj)); > + m->has_id = !!m->id; > > - m->value->id = g_strdup(object_get_canonical_path_component(obj)); > - m->value->has_id = !!m->value->id; > - > - m->value->size = object_property_get_uint(obj, "size", > - &error_abort); > - m->value->merge = object_property_get_bool(obj, "merge", > - &error_abort); > - m->value->dump = object_property_get_bool(obj, "dump", > - &error_abort); > - m->value->prealloc = object_property_get_bool(obj, > - "prealloc", > - &error_abort); > - m->value->policy = object_property_get_enum(obj, > - "policy", > - "HostMemPolicy", > - &error_abort); > + m->size = object_property_get_uint(obj, "size", &error_abort); > + m->merge = object_property_get_bool(obj, "merge", &error_abort); > + m->dump = object_property_get_bool(obj, "dump", &error_abort); > + m->prealloc = object_property_get_bool(obj, "prealloc", > &error_abort); > + m->policy = object_property_get_enum(obj, "policy", "HostMemPolicy", > + &error_abort); > host_nodes = object_property_get_qobject(obj, > "host-nodes", > &error_abort); > v = qobject_input_visitor_new(host_nodes); > - visit_type_uint16List(v, NULL, &m->value->host_nodes, &error_abort); > + visit_type_uint16List(v, NULL, &m->host_nodes, &error_abort); > visit_free(v); > qobject_unref(host_nodes); > > - m->next = *list; > - *list = m; > + QAPI_LIST_PREPEND(*list, m); > } > > return 0; [...]