]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
util: xml: Refactor cleanup path in virXMLValidatorInit
authorPeter Krempa <pkrempa@redhat.com>
Thu, 4 Aug 2022 08:31:06 +0000 (10:31 +0200)
committerPeter Krempa <pkrempa@redhat.com>
Wed, 2 Nov 2022 08:26:03 +0000 (09:26 +0100)
Automatically free 'validator' on errors.

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

index ca83ea1dd5c479a7001b52d3da314ca89711993e..ea43331dcc79783aacb7a388c4d0c90ec815067d 100644 (file)
@@ -1504,7 +1504,7 @@ virXMLValidatorRNGErrorIgnore(void *ctx G_GNUC_UNUSED,
 virXMLValidator *
 virXMLValidatorInit(const char *schemafile)
 {
-    virXMLValidator *validator = NULL;
+    g_autoptr(virXMLValidator) validator = NULL;
 
     validator = g_new0(virXMLValidator, 1);
 
@@ -1515,7 +1515,7 @@ virXMLValidatorInit(const char *schemafile)
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Unable to create RNG parser for %s"),
                        validator->schemafile);
-        goto error;
+        return NULL;
     }
 
     xmlRelaxNGSetParserErrors(validator->rngParser,
@@ -1528,25 +1528,22 @@ virXMLValidatorInit(const char *schemafile)
                        _("Unable to parse RNG %s: %s"),
                        validator->schemafile,
                        virBufferCurrentContent(&validator->buf));
-        goto error;
+        return NULL;
     }
 
     if (!(validator->rngValid = xmlRelaxNGNewValidCtxt(validator->rng))) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("Unable to create RNG validation context %s"),
                        validator->schemafile);
-        goto error;
+        return NULL;
     }
 
     xmlRelaxNGSetValidErrors(validator->rngValid,
                              virXMLValidatorRNGErrorCatch,
                              virXMLValidatorRNGErrorIgnore,
                              &validator->buf);
-    return validator;
 
- error:
-    virXMLValidatorFree(validator);
-    return NULL;
+    return g_steal_pointer(&validator);
 }