1
0
mirror of https://gitlab.com/libvirt/libvirt.git synced 2025-03-07 17:28:15 +00:00

conf: domain: Refactor cleanup in virSysinfoBIOSParseXML

Register automatic cleanup for virSysinfoBIOSDef and use it to refactor
the cleanup code paths in virSysinfoBIOSParseXML.

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:09:23 +02:00
parent 45029ffa54
commit 407c4b12c7
2 changed files with 7 additions and 13 deletions

View File

@ -12080,19 +12080,16 @@ virSysinfoBIOSParseXML(xmlNodePtr node,
virSysinfoBIOSDef **bios)
{
VIR_XPATH_NODE_AUTORESTORE(ctxt)
int ret = -1;
virSysinfoBIOSDef *def;
g_autoptr(virSysinfoBIOSDef) def = g_new0(virSysinfoBIOSDef, 1);
ctxt->node = node;
if (!virXMLNodeNameEqual(node, "bios")) {
virReportError(VIR_ERR_XML_ERROR, "%s",
_("XML does not contain expected 'bios' element"));
return ret;
return -1;
}
def = g_new0(virSysinfoBIOSDef, 1);
def->vendor = virXPathString("string(entry[@name='vendor'])", ctxt);
def->version = virXPathString("string(entry[@name='version'])", ctxt);
def->date = virXPathString("string(entry[@name='date'])", ctxt);
@ -12117,20 +12114,16 @@ virSysinfoBIOSParseXML(xmlNodePtr node,
(year < 0 || (year >= 100 && year < 1900))) {
virReportError(VIR_ERR_XML_DETAIL, "%s",
_("Invalid BIOS 'date' format"));
goto cleanup;
return -1;
}
}
if (!def->vendor && !def->version &&
!def->date && !def->release) {
g_clear_pointer(&def, virSysinfoBIOSDefFree);
}
!def->date && !def->release)
return 0;
*bios = g_steal_pointer(&def);
ret = 0;
cleanup:
virSysinfoBIOSDefFree(def);
return ret;
return 0;
}
static int

View File

@ -142,6 +142,7 @@ struct _virSysinfoDef {
virSysinfoDef *virSysinfoRead(void);
void virSysinfoBIOSDefFree(virSysinfoBIOSDef *def);
G_DEFINE_AUTOPTR_CLEANUP_FUNC(virSysinfoBIOSDef, virSysinfoBIOSDefFree);
void virSysinfoSystemDefFree(virSysinfoSystemDef *def);
void virSysinfoBaseBoardDefClear(virSysinfoBaseBoardDef *def);
void virSysinfoChassisDefFree(virSysinfoChassisDef *def);