virDomainCapsCPUModelsPtr models)
{
struct cpuArchDriver *driver;
- virCPUDefPtr cpu = NULL;
+ g_autoptr(virCPUDef) cpu = NULL;
VIR_DEBUG("arch=%s, type=%s, nodeInfo=%p, models=%p",
virArchToString(arch), virCPUTypeToString(type), nodeInfo,
virReportError(VIR_ERR_INVALID_ARG,
_("cannot set topology for CPU type '%s'"),
virCPUTypeToString(type));
- goto error;
+ return NULL;
}
cpu->type = type;
break;
virReportError(VIR_ERR_INVALID_ARG,
_("unsupported CPU type: %s"),
virCPUTypeToString(type));
- goto error;
+ return NULL;
}
if (nodeInfo) {
* filled in.
*/
if (driver->getHost) {
- if (driver->getHost(cpu, models) < 0 &&
- !nodeInfo)
- goto error;
+ if (driver->getHost(cpu, models) < 0 && !nodeInfo)
+ return NULL;
} else if (nodeInfo) {
VIR_DEBUG("cannot detect host CPU model for %s architecture",
virArchToString(arch));
virReportError(VIR_ERR_NO_SUPPORT,
_("cannot detect host CPU model for %s architecture"),
virArchToString(arch));
- goto error;
+ return NULL;
}
- return cpu;
-
- error:
- virCPUDefFree(cpu);
- return NULL;
+ return g_steal_pointer(&cpu);
}