From 3e10557766a7884d022fe8f494ab922039826d6d Mon Sep 17 00:00:00 2001 From: Peter Krempa Date: Thu, 4 Aug 2022 10:31:06 +0200 Subject: [PATCH] util: xml: Refactor cleanup path in virXMLValidatorInit MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit Automatically free 'validator' on errors. Signed-off-by: Peter Krempa Reviewed-by: Ján Tomko --- src/util/virxml.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) 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); } -- 2.47.2