]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
virDomainNetIPInfoParseXML: Simplify cleanup
authorPeter Krempa <pkrempa@redhat.com>
Thu, 15 Sep 2022 16:00:12 +0000 (18:00 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Mon, 3 Oct 2022 12:43:17 +0000 (14:43 +0200)
Do the XPath fetches first as they don't require cleanup and rename
'cleanup' to 'error' and take it only on failure.

Signed-off-by: Peter Krempa <pkrempa@redhat.com>
Reviewed-by: Ján Tomko <jtomko@redhat.com>
src/conf/domain_conf.c

index 26a24ecd55816af801e32e1081730561469efb78..ffc55508efbf667b83906696ef85bf00ecd99a7b 100644 (file)
@@ -6216,42 +6216,38 @@ virDomainNetIPInfoParseXML(const char *source,
                            xmlXPathContextPtr ctxt,
                            virNetDevIPInfo *def)
 {
-    int ret = -1;
     size_t i;
     g_autofree xmlNodePtr *ipNodes = NULL;
     int nipNodes;
     g_autofree xmlNodePtr *routeNodes = NULL;
     int nrouteNodes;
 
-    if ((nipNodes = virXPathNodeSet("./ip", ctxt, &ipNodes)) < 0)
-        goto cleanup;
+    if ((nipNodes = virXPathNodeSet("./ip", ctxt, &ipNodes)) < 0 ||
+        (nrouteNodes = virXPathNodeSet("./route", ctxt, &routeNodes)) < 0)
+        return -1;
 
     for (i = 0; i < nipNodes; i++) {
         virNetDevIPAddr *ip = NULL;
 
         if (!(ip = virDomainNetIPParseXML(ipNodes[i])))
-            goto cleanup;
+            goto error;
 
         VIR_APPEND_ELEMENT(def->ips, def->nips, ip);
     }
 
-    if ((nrouteNodes = virXPathNodeSet("./route", ctxt, &routeNodes)) < 0)
-        goto cleanup;
-
     for (i = 0; i < nrouteNodes; i++) {
         virNetDevIPRoute *route = NULL;
 
         if (!(route = virNetDevIPRouteParseXML(source, routeNodes[i], ctxt)))
-            goto cleanup;
+            goto error;
 
         VIR_APPEND_ELEMENT(def->routes, def->nroutes, route);
     }
 
-    ret = 0;
- cleanup:
-    if (ret < 0)
-        virNetDevIPInfoClear(def);
-    return ret;
+    return 0;
+ error:
+    virNetDevIPInfoClear(def);
+    return -1;
 }