virCPUx86MapPtr map,
virDomainCapsCPUModelPtr hvModel)
{
- virCPUDefPtr cpu;
- virCPUx86Data copy = VIR_CPU_X86_DATA_INIT;
- virCPUx86Data modelData = VIR_CPU_X86_DATA_INIT;
+ g_autoptr(virCPUDef) cpu = NULL;
+ g_auto(virCPUx86Data) copy = VIR_CPU_X86_DATA_INIT;
+ g_auto(virCPUx86Data) modelData = VIR_CPU_X86_DATA_INIT;
virCPUx86VendorPtr vendor;
cpu = virCPUDefNew();
if ((feature = x86FeatureFind(map, *blocker)) &&
!x86DataIsSubset(©, &feature->data))
if (x86DataAdd(&modelData, &feature->data) < 0)
- goto error;
+ return NULL;
}
}
if (x86DataToCPUFeatures(cpu, VIR_CPU_FEATURE_REQUIRE, ©, map) ||
x86DataToCPUFeatures(cpu, VIR_CPU_FEATURE_DISABLE, &modelData, map))
- goto error;
-
- cleanup:
- virCPUx86DataClear(&modelData);
- virCPUx86DataClear(©);
- return cpu;
+ return NULL;
- error:
- virCPUDefFree(cpu);
- cpu = NULL;
- goto cleanup;
+ return g_steal_pointer(&cpu);
}