conf: domain: Refactor cleanup in virSysinfoChassisParseXML

Register automatic cleanup for virSysinfoChassisDef and use it to
refactor the cleanup code paths in virSysinfoChassisParseXML.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
This commit is contained in:
Peter Krempa 2022-10-06 11:20:27 +02:00
parent 98f604d44a
commit 4e402be080
2 changed files with 6 additions and 11 deletions

View File

@ -12267,19 +12267,16 @@ virSysinfoChassisParseXML(xmlNodePtr node,
virSysinfoChassisDef **chassisdef) virSysinfoChassisDef **chassisdef)
{ {
VIR_XPATH_NODE_AUTORESTORE(ctxt) VIR_XPATH_NODE_AUTORESTORE(ctxt)
int ret = -1; g_autoptr(virSysinfoChassisDef) def = g_new0(virSysinfoChassisDef, 1);
virSysinfoChassisDef *def;
ctxt->node = node; ctxt->node = node;
if (!xmlStrEqual(node->name, BAD_CAST "chassis")) { if (!xmlStrEqual(node->name, BAD_CAST "chassis")) {
virReportError(VIR_ERR_XML_ERROR, "%s", virReportError(VIR_ERR_XML_ERROR, "%s",
_("XML does not contain expected 'chassis' element")); _("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->manufacturer = virXPathString("string(entry[@name='manufacturer'])", ctxt);
def->version = virXPathString("string(entry[@name='version'])", ctxt); def->version = virXPathString("string(entry[@name='version'])", ctxt);
def->serial = virXPathString("string(entry[@name='serial'])", ctxt); def->serial = virXPathString("string(entry[@name='serial'])", ctxt);
@ -12287,14 +12284,11 @@ virSysinfoChassisParseXML(xmlNodePtr node,
def->sku = virXPathString("string(entry[@name='sku'])", ctxt); def->sku = virXPathString("string(entry[@name='sku'])", ctxt);
if (!def->manufacturer && !def->version && if (!def->manufacturer && !def->version &&
!def->serial && !def->asset && !def->sku) { !def->serial && !def->asset && !def->sku)
g_clear_pointer(&def, virSysinfoChassisDefFree); return 0;
}
*chassisdef = g_steal_pointer(&def); *chassisdef = g_steal_pointer(&def);
ret = 0; return 0;
virSysinfoChassisDefFree(def);
return ret;
} }

View File

@ -147,6 +147,7 @@ void virSysinfoSystemDefFree(virSysinfoSystemDef *def);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoSystemDef, virSysinfoSystemDefFree); G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoSystemDef, virSysinfoSystemDefFree);
void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def); void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def);
void virSysinfoChassisDefFree(virSysinfoChassisDef *def); void virSysinfoChassisDefFree(virSysinfoChassisDef *def);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoChassisDef, virSysinfoChassisDefFree);
void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDef *def); void virSysinfoOEMStringsDefFree(virSysinfoOEMStringsDef *def);
void virSysinfoDefFree(virSysinfoDef *def); void virSysinfoDefFree(virSysinfoDef *def);