From: Peter Krempa Date: Thu, 4 Aug 2022 08:31:06 +0000 (+0200) Subject: util: xml: Refactor cleanup path in virXMLValidatorInit X-Git-Tag: v8.10.0-rc1~204 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3e10557766a7884d022fe8f494ab922039826d6d;p=thirdparty%2Flibvirt.git util: xml: Refactor cleanup path in virXMLValidatorInit Automatically free 'validator' on errors. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- diff --git a/src/util/virxml.c b/src/util/virxml.c index ca83ea1dd5..ea43331dcc 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -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); }