virDomainObjParseXML: Use g_autoptr

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
This commit is contained in:
Tim Wiederhake 2021-05-10 14:48:33 +02:00 committed by Michal Privoznik
parent 107f687128
commit 34851dd8f4

View File

@ -20351,7 +20351,7 @@ virDomainObjParseXML(xmlDocPtr xml,
long val; long val;
xmlNodePtr config; xmlNodePtr config;
xmlNodePtr oldnode; xmlNodePtr oldnode;
virDomainObj *obj; g_autoptr(virDomainObj) obj = NULL;
size_t i; size_t i;
int n; int n;
virDomainState state; virDomainState state;
@ -20367,7 +20367,7 @@ virDomainObjParseXML(xmlDocPtr xml,
if (!(config = virXPathNode("./domain", ctxt))) { if (!(config = virXPathNode("./domain", ctxt))) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("no domain config")); "%s", _("no domain config"));
goto error; return NULL;
} }
oldnode = ctxt->node; oldnode = ctxt->node;
@ -20375,17 +20375,17 @@ virDomainObjParseXML(xmlDocPtr xml,
obj->def = virDomainDefParseXML(xml, ctxt, xmlopt, flags); obj->def = virDomainDefParseXML(xml, ctxt, xmlopt, flags);
ctxt->node = oldnode; ctxt->node = oldnode;
if (!obj->def) if (!obj->def)
goto error; return NULL;
if (virXMLPropEnum(ctxt->node, "state", virDomainStateTypeFromString, if (virXMLPropEnum(ctxt->node, "state", virDomainStateTypeFromString,
VIR_XML_PROP_REQUIRED, &state) < 0) VIR_XML_PROP_REQUIRED, &state) < 0)
goto error; return NULL;
if ((tmp = virXMLPropString(ctxt->node, "reason"))) { if ((tmp = virXMLPropString(ctxt->node, "reason"))) {
if ((reason = virDomainStateReasonFromString(state, tmp)) < 0) { if ((reason = virDomainStateReasonFromString(state, tmp)) < 0) {
virReportError(VIR_ERR_CONFIG_UNSUPPORTED, virReportError(VIR_ERR_CONFIG_UNSUPPORTED,
_("invalid domain state reason '%s'"), tmp); _("invalid domain state reason '%s'"), tmp);
goto error; return NULL;
} }
} }
@ -20394,12 +20394,12 @@ virDomainObjParseXML(xmlDocPtr xml,
if (virXPathLong("string(./@pid)", ctxt, &val) < 0) { if (virXPathLong("string(./@pid)", ctxt, &val) < 0) {
virReportError(VIR_ERR_INTERNAL_ERROR, virReportError(VIR_ERR_INTERNAL_ERROR,
"%s", _("invalid pid")); "%s", _("invalid pid"));
goto error; return NULL;
} }
obj->pid = (pid_t)val; obj->pid = (pid_t)val;
if ((n = virXPathNodeSet("./taint", ctxt, &taintNodes)) < 0) if ((n = virXPathNodeSet("./taint", ctxt, &taintNodes)) < 0)
goto error; return NULL;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
int rc; int rc;
virDomainTaintFlags taint; virDomainTaintFlags taint;
@ -20407,14 +20407,14 @@ virDomainObjParseXML(xmlDocPtr xml,
if ((rc = virXMLPropEnum(taintNodes[i], "flag", if ((rc = virXMLPropEnum(taintNodes[i], "flag",
virDomainTaintTypeFromString, virDomainTaintTypeFromString,
VIR_XML_PROP_NONE, &taint)) < 0) VIR_XML_PROP_NONE, &taint)) < 0)
goto error; return NULL;
if (rc == 1) if (rc == 1)
virDomainObjTaint(obj, taint); virDomainObjTaint(obj, taint);
} }
if ((n = virXPathNodeSet("./deprecation", ctxt, &depNodes)) < 0) if ((n = virXPathNodeSet("./deprecation", ctxt, &depNodes)) < 0)
goto error; return NULL;
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
g_autofree char *str = virXMLNodeContentString(depNodes[i]); g_autofree char *str = virXMLNodeContentString(depNodes[i]);
virDomainObjDeprecation(obj, str); virDomainObjDeprecation(obj, str);
@ -20422,24 +20422,20 @@ virDomainObjParseXML(xmlDocPtr xml,
if (xmlopt->privateData.parse && if (xmlopt->privateData.parse &&
xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0) xmlopt->privateData.parse(ctxt, obj, &xmlopt->config) < 0)
goto error; return NULL;
if (xmlopt->privateData.getParseOpaque) if (xmlopt->privateData.getParseOpaque)
parseOpaque = xmlopt->privateData.getParseOpaque(obj); parseOpaque = xmlopt->privateData.getParseOpaque(obj);
/* callback to fill driver specific domain aspects */ /* callback to fill driver specific domain aspects */
if (virDomainDefPostParse(obj->def, flags, xmlopt, parseOpaque) < 0) if (virDomainDefPostParse(obj->def, flags, xmlopt, parseOpaque) < 0)
goto error; return NULL;
/* validate configuration */ /* validate configuration */
if (virDomainDefValidate(obj->def, flags, xmlopt, parseOpaque) < 0) if (virDomainDefValidate(obj->def, flags, xmlopt, parseOpaque) < 0)
goto error; return NULL;
return obj; return g_steal_pointer(&obj);
error:
virObjectUnref(obj);
return NULL;
} }