[libvirt PATCH 0/3] xml: use g_auto for xmlXPathObject (glib chronicles)

Ján Tomko (3): util: define cleanup func for xmlXPathObject util: xml: use g_auto for xmlXPathObject util: xml: clean up unnecessary ret variables src/util/virxml.c | 49 +++++++++++++---------------------------------- src/util/virxml.h | 1 + 2 files changed, 14 insertions(+), 36 deletions(-) -- 2.31.1

Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/util/virxml.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/util/virxml.h b/src/util/virxml.h index 0bb0d1c118..c8eb51a65a 100644 --- a/src/util/virxml.h +++ b/src/util/virxml.h @@ -363,6 +363,7 @@ G_DEFINE_AUTO_CLEANUP_CLEAR_FUNC(virXPathContextNodeSave, virXPathContextNodeRes G_DEFINE_AUTOPTR_CLEANUP_FUNC(xmlDoc, xmlFreeDoc); G_DEFINE_AUTOPTR_CLEANUP_FUNC(xmlXPathContext, xmlXPathFreeContext); +G_DEFINE_AUTOPTR_CLEANUP_FUNC(xmlXPathObject, xmlXPathFreeObject); G_DEFINE_AUTOPTR_CLEANUP_FUNC(xmlBuffer, xmlBufferFree); G_DEFINE_AUTOPTR_CLEANUP_FUNC(xmlNode, xmlFreeNode); G_DEFINE_AUTOPTR_CLEANUP_FUNC(xmlParserCtxt, xmlFreeParserCtxt); -- 2.31.1

Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/util/virxml.c | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/src/util/virxml.c b/src/util/virxml.c index 4360b15486..6b5ed08426 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -72,7 +72,7 @@ char * virXPathString(const char *xpath, xmlXPathContextPtr ctxt) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; char *ret; if ((ctxt == NULL) || (xpath == NULL)) { @@ -83,11 +83,9 @@ virXPathString(const char *xpath, obj = xmlXPathEval(BAD_CAST xpath, ctxt); if ((obj == NULL) || (obj->type != XPATH_STRING) || (obj->stringval == NULL) || (obj->stringval[0] == 0)) { - xmlXPathFreeObject(obj); return NULL; } ret = g_strdup((char *)obj->stringval); - xmlXPathFreeObject(obj); return ret; } @@ -147,7 +145,7 @@ virXPathNumber(const char *xpath, xmlXPathContextPtr ctxt, double *value) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -157,12 +155,10 @@ virXPathNumber(const char *xpath, obj = xmlXPathEval(BAD_CAST xpath, ctxt); if ((obj == NULL) || (obj->type != XPATH_NUMBER) || (isnan(obj->floatval))) { - xmlXPathFreeObject(obj); return -1; } *value = obj->floatval; - xmlXPathFreeObject(obj); return 0; } @@ -172,7 +168,7 @@ virXPathLongBase(const char *xpath, int base, long *value) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; int ret = 0; if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) { @@ -194,7 +190,6 @@ virXPathLongBase(const char *xpath, ret = -1; } - xmlXPathFreeObject(obj); return ret; } @@ -274,7 +269,7 @@ virXPathULongBase(const char *xpath, int base, unsigned long *value) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; int ret = 0; if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) { @@ -296,7 +291,6 @@ virXPathULongBase(const char *xpath, ret = -1; } - xmlXPathFreeObject(obj); return ret; } @@ -387,7 +381,7 @@ virXPathULongLong(const char *xpath, xmlXPathContextPtr ctxt, unsigned long long *value) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; int ret = 0; if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) { @@ -409,7 +403,6 @@ virXPathULongLong(const char *xpath, ret = -1; } - xmlXPathFreeObject(obj); return ret; } @@ -430,7 +423,7 @@ virXPathLongLong(const char *xpath, xmlXPathContextPtr ctxt, long long *value) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; int ret = 0; if ((ctxt == NULL) || (xpath == NULL) || (value == NULL)) { @@ -452,7 +445,6 @@ virXPathLongLong(const char *xpath, ret = -1; } - xmlXPathFreeObject(obj); return ret; } @@ -894,7 +886,7 @@ int virXPathBoolean(const char *xpath, xmlXPathContextPtr ctxt) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; int ret; if ((ctxt == NULL) || (xpath == NULL)) { @@ -905,12 +897,10 @@ virXPathBoolean(const char *xpath, obj = xmlXPathEval(BAD_CAST xpath, ctxt); if ((obj == NULL) || (obj->type != XPATH_BOOLEAN) || (obj->boolval < 0) || (obj->boolval > 1)) { - xmlXPathFreeObject(obj); return -1; } ret = obj->boolval; - xmlXPathFreeObject(obj); return ret; } @@ -928,7 +918,7 @@ xmlNodePtr virXPathNode(const char *xpath, xmlXPathContextPtr ctxt) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; xmlNodePtr ret; if ((ctxt == NULL) || (xpath == NULL)) { @@ -940,12 +930,10 @@ virXPathNode(const char *xpath, if ((obj == NULL) || (obj->type != XPATH_NODESET) || (obj->nodesetval == NULL) || (obj->nodesetval->nodeNr <= 0) || (obj->nodesetval->nodeTab == NULL)) { - xmlXPathFreeObject(obj); return NULL; } ret = obj->nodesetval->nodeTab[0]; - xmlXPathFreeObject(obj); return ret; } @@ -965,7 +953,7 @@ virXPathNodeSet(const char *xpath, xmlXPathContextPtr ctxt, xmlNodePtr **list) { - xmlXPathObjectPtr obj; + g_autoptr(xmlXPathObject) obj = NULL; int ret; if ((ctxt == NULL) || (xpath == NULL)) { @@ -984,21 +972,17 @@ virXPathNodeSet(const char *xpath, if (obj->type != XPATH_NODESET) { virReportError(VIR_ERR_INTERNAL_ERROR, _("Incorrect xpath '%s'"), xpath); - xmlXPathFreeObject(obj); return -1; } - if ((obj->nodesetval == NULL) || (obj->nodesetval->nodeNr < 0)) { - xmlXPathFreeObject(obj); + if ((obj->nodesetval == NULL) || (obj->nodesetval->nodeNr < 0)) return 0; - } ret = obj->nodesetval->nodeNr; if (list != NULL && ret) { *list = g_new0(xmlNodePtr, ret); memcpy(*list, obj->nodesetval->nodeTab, ret * sizeof(xmlNodePtr)); } - xmlXPathFreeObject(obj); return ret; } -- 2.31.1

Signed-off-by: Ján Tomko <jtomko@redhat.com> --- src/util/virxml.c | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/util/virxml.c b/src/util/virxml.c index 6b5ed08426..a236e4e7a0 100644 --- a/src/util/virxml.c +++ b/src/util/virxml.c @@ -73,7 +73,6 @@ virXPathString(const char *xpath, xmlXPathContextPtr ctxt) { g_autoptr(xmlXPathObject) obj = NULL; - char *ret; if ((ctxt == NULL) || (xpath == NULL)) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -85,8 +84,7 @@ virXPathString(const char *xpath, (obj->stringval == NULL) || (obj->stringval[0] == 0)) { return NULL; } - ret = g_strdup((char *)obj->stringval); - return ret; + return g_strdup((char *)obj->stringval); } @@ -887,7 +885,6 @@ virXPathBoolean(const char *xpath, xmlXPathContextPtr ctxt) { g_autoptr(xmlXPathObject) obj = NULL; - int ret; if ((ctxt == NULL) || (xpath == NULL)) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -899,9 +896,7 @@ virXPathBoolean(const char *xpath, (obj->boolval < 0) || (obj->boolval > 1)) { return -1; } - ret = obj->boolval; - - return ret; + return obj->boolval; } /** @@ -919,7 +914,6 @@ virXPathNode(const char *xpath, xmlXPathContextPtr ctxt) { g_autoptr(xmlXPathObject) obj = NULL; - xmlNodePtr ret; if ((ctxt == NULL) || (xpath == NULL)) { virReportError(VIR_ERR_INTERNAL_ERROR, @@ -933,8 +927,7 @@ virXPathNode(const char *xpath, return NULL; } - ret = obj->nodesetval->nodeTab[0]; - return ret; + return obj->nodesetval->nodeTab[0]; } /** -- 2.31.1
participants (2)
-
Ján Tomko
-
Pavel Hrdina