[PATCH 4/4] virSecretLoad: Simplify cleanup path

Michal Privoznik mprivozn at redhat.com
Mon Oct 16 08:07:51 UTC 2023


When loading a secret value fails, the control jumps over to the
'cleanup' label where explicit call to virSecretDefFree()
happens. This is unnecessary as the corresponding variable can be
declared with g_autoptr() after which all error paths can just
return NULL instantly.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
---
 src/conf/virsecretobj.c | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)

diff --git a/src/conf/virsecretobj.c b/src/conf/virsecretobj.c
index 2585b2c972..455798d414 100644
--- a/src/conf/virsecretobj.c
+++ b/src/conf/virsecretobj.c
@@ -865,25 +865,24 @@ virSecretLoad(virSecretObjList *secrets,
               const char *path,
               const char *configDir)
 {
-    virSecretDef *def = NULL;
+    g_autoptr(virSecretDef) def = NULL;
     virSecretObj *obj = NULL;
 
     if (!(def = virSecretDefParse(NULL, path, 0)))
-        goto cleanup;
+        return NULL;
 
     if (virSecretLoadValidateUUID(def, file) < 0)
-        goto cleanup;
+        return NULL;
 
     if (!(obj = virSecretObjListAdd(secrets, &def, configDir, NULL)))
-        goto cleanup;
+        return NULL;
 
     if (virSecretLoadValue(obj) < 0) {
         virSecretObjListRemove(secrets, obj);
         g_clear_pointer(&obj, virObjectUnref);
+        return NULL;
     }
 
- cleanup:
-    virSecretDefFree(def);
     return obj;
 }
 
-- 
2.41.0



More information about the libvir-list mailing list