How about this: diff --git a/migration.c b/migration.c index b4f8462..6066ab4 100644 --- a/migration.c +++ b/migration.c @@ -146,22 +146,16 @@ uint64_t migrate_max_downtime(void) MigrationCapabilityStatusList *qmp_query_migrate_capabilities(Error **errp) { MigrationCapabilityStatusList *head = NULL; - MigrationCapabilityStatusList *caps; + MigrationCapabilityStatusList **capp = &head; MigrationState *s = migrate_get_current(); int i;
for (i = 0; i < MIGRATION_CAPABILITY_MAX; i++) { - if (head == NULL) { - head = g_malloc0(sizeof(*caps)); - caps = head; - } else { - caps->next = g_malloc0(sizeof(*caps)); - caps = caps->next; - } - caps->value = - g_malloc(sizeof(*caps->value)); - caps->value->capability = i; - caps->value->state = s->enabled_capabilities[i]; + *capp = g_malloc0(sizeof(*head)); + (*capp)->value = g_malloc(sizeof(*head->value)); + (*capp)->value->capability = i; + (*capp)->value->state = s->enabled_capabilities[i]; + capp = &(*capp)->next; } return head; This is what I had in mind at the very beginnig, but only now tried to make a patch... Thanks, /mjt Thanks,