[PATCH v4 02/13] lib: Prefer g_autoptr(dnsmasqCaps) instead of explicit unref

Michal Privoznik mprivozn at redhat.com
Mon Jan 17 15:19:16 UTC 2022


The dnsmasqCaps type has its own cleanup function defined and
ready to use via g_autoptr(). Use automatic cleanup instead of
an explicit one.

Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
Reviewed-by: Andrea Bolognani <abologna at redhat.com>
---
 src/util/virdnsmasq.c       | 22 ++++++++++------------
 tests/networkxml2conftest.c |  7 +++----
 2 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c
index d304929d51..9f3da1d5e6 100644
--- a/src/util/virdnsmasq.c
+++ b/src/util/virdnsmasq.c
@@ -702,44 +702,42 @@ dnsmasqCapsRefreshInternal(dnsmasqCaps *caps, bool force)
 static dnsmasqCaps *
 dnsmasqCapsNewEmpty(void)
 {
-    dnsmasqCaps *caps;
+    g_autoptr(dnsmasqCaps) caps = NULL;
 
     if (dnsmasqCapsInitialize() < 0)
         return NULL;
     if (!(caps = virObjectNew(dnsmasqCapsClass)))
         return NULL;
     caps->binaryPath = g_strdup(DNSMASQ);
-    return caps;
+    return g_steal_pointer(&caps);
 }
 
 dnsmasqCaps *
 dnsmasqCapsNewFromBuffer(const char *buf)
 {
-    dnsmasqCaps *caps = dnsmasqCapsNewEmpty();
+    g_autoptr(dnsmasqCaps) caps = dnsmasqCapsNewEmpty();
 
     if (!caps)
         return NULL;
 
-    if (dnsmasqCapsSetFromBuffer(caps, buf) < 0) {
-        virObjectUnref(caps);
+    if (dnsmasqCapsSetFromBuffer(caps, buf) < 0)
         return NULL;
-    }
-    return caps;
+
+    return g_steal_pointer(&caps);
 }
 
 dnsmasqCaps *
 dnsmasqCapsNewFromBinary(void)
 {
-    dnsmasqCaps *caps = dnsmasqCapsNewEmpty();
+    g_autoptr(dnsmasqCaps) caps = dnsmasqCapsNewEmpty();
 
     if (!caps)
         return NULL;
 
-    if (dnsmasqCapsRefreshInternal(caps, true) < 0) {
-        virObjectUnref(caps);
+    if (dnsmasqCapsRefreshInternal(caps, true) < 0)
         return NULL;
-    }
-    return caps;
+
+    return g_steal_pointer(&caps);
 }
 
 const char *
diff --git a/tests/networkxml2conftest.c b/tests/networkxml2conftest.c
index 178c74d9af..d79c2b4783 100644
--- a/tests/networkxml2conftest.c
+++ b/tests/networkxml2conftest.c
@@ -112,8 +112,9 @@ static int
 mymain(void)
 {
     int ret = 0;
-    dnsmasqCaps *full
-        = dnsmasqCapsNewFromBuffer("Dnsmasq version 2.67\n--bind-dynamic\n--ra-param");
+    g_autoptr(dnsmasqCaps) full = NULL;
+
+    full = dnsmasqCapsNewFromBuffer("Dnsmasq version 2.67\n--bind-dynamic\n--ra-param");
 
 #define DO_TEST(xname, xcaps) \
     do { \
@@ -154,8 +155,6 @@ mymain(void)
     DO_TEST("leasetime-hours", full);
     DO_TEST("leasetime-infinite", full);
 
-    virObjectUnref(full);
-
     return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
 }
 
-- 
2.34.1




More information about the libvir-list mailing list