]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virXMLParseHelper: Refactor cleanup
authorPeter Krempa <pkrempa@redhat.com>
Wed, 14 Apr 2021 11:06:51 +0000 (13:06 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Fri, 16 Apr 2021 11:17:35 +0000 (13:17 +0200)
Switch @xml and @pctxt to g_autofree and get rid of the "error" and
"cleanup" labels.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Tim Wiederhake <twiederh@redhat.com>
src/util/virxml.c

index 029b3d646eb504b0e9c40a597c5f20c050cc8ecf..58d640546f3545698c7ffe0c415b3b041f35e416 100644 (file)
@@ -786,8 +786,8 @@ virXMLParseHelper(int domcode,
                   xmlXPathContextPtr *ctxt)
 {
     struct virParserData private;
-    xmlParserCtxtPtr pctxt;
-    xmlDocPtr xml = NULL;
+    g_autoptr(xmlParserCtxt) pctxt = NULL;
+    g_autoptr(xmlDoc) xml = NULL;
     const char *docname;
 
     if (filename)
@@ -823,32 +823,24 @@ virXMLParseHelper(int domcode,
                                   docname);
         }
 
-        goto error;
+        return NULL;
     }
 
     if (xmlDocGetRootElement(xml) == NULL) {
         virGenericReportError(domcode, VIR_ERR_INTERNAL_ERROR,
                               "%s", _("missing root element"));
-        goto error;
+
+        return NULL;
     }
 
     if (ctxt) {
         if (!(*ctxt = virXMLXPathContextNew(xml)))
-            goto error;
+            return NULL;
 
         (*ctxt)->node = xmlDocGetRootElement(xml);
     }
 
- cleanup:
-    xmlFreeParserCtxt(pctxt);
-
-    return xml;
-
- error:
-    xmlFreeDoc(xml);
-    xml = NULL;
-
-    goto cleanup;
+    return g_steal_pointer(&xml);
 }
 
 const char *virXMLPickShellSafeComment(const char *str1, const char *str2)