virSysinfoChassisDef **chassisdef)
{
VIR_XPATH_NODE_AUTORESTORE(ctxt)
- int ret = -1;
- virSysinfoChassisDef *def;
+ g_autoptr(virSysinfoChassisDef) def = g_new0(virSysinfoChassisDef, 1);
ctxt->node = node;
if (!xmlStrEqual(node->name, BAD_CAST "chassis")) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("XML does not contain expected 'chassis' element"));
- return ret;
+ return -1;
}
- def = g_new0(virSysinfoChassisDef, 1);
-
def->manufacturer = virXPathString("string(entry[@name='manufacturer'])", ctxt);
def->version = virXPathString("string(entry[@name='version'])", ctxt);
def->serial = virXPathString("string(entry[@name='serial'])", ctxt);
def->sku = virXPathString("string(entry[@name='sku'])", ctxt);
if (!def->manufacturer && !def->version &&
- !def->serial && !def->asset && !def->sku) {
- g_clear_pointer(&def, virSysinfoChassisDefFree);
- }
+ !def->serial && !def->asset && !def->sku)
+ return 0;
*chassisdef = g_steal_pointer(&def);
- ret = 0;
- virSysinfoChassisDefFree(def);
- return ret;
+ return 0;
}
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoSystemDef, virSysinfoSystemDefFree);
void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def);
void virSysinfoChassisDefFree(virSysinfoChassisDef *def);
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoChassisDef, virSysinfoChassisDefFree);
void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDef *def);
void virSysinfoDefFree(virSysinfoDef *def);