[libvirt] [PATCH v1 08/32] util: socketaddr: define cleanup function using VIR_DEFINE_AUTOPTR_FUNC

Sukrit Bhatnagar skrtbhtngr at gmail.com
Sat Jul 28 18:01:23 UTC 2018


Using the new VIR_DEFINE_AUTOPTR_FUNC macro defined in
src/util/viralloc.h, define a new wrapper around an existing
cleanup function which will be called when a variable declared
with VIR_AUTOPTR macro goes out of scope. Also, drop the redundant
viralloc.h include, since that has moved from the source module into
the header.

When a variable of type virSocketAddrPtr is declared using
VIR_AUTOPTR, the function virSocketAddrFree will be run
automatically on it when it goes out of scope.

Signed-off-by: Sukrit Bhatnagar <skrtbhtngr at gmail.com>
---
 src/util/virsocketaddr.c | 7 ++++++-
 src/util/virsocketaddr.h | 9 +++++++--
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/src/util/virsocketaddr.c b/src/util/virsocketaddr.c
index 5c3bfad..6b52a3d 100644
--- a/src/util/virsocketaddr.c
+++ b/src/util/virsocketaddr.c
@@ -26,7 +26,6 @@
 #include "virsocketaddr.h"
 #include "virerror.h"
 #include "virstring.h"
-#include "viralloc.h"
 #include "virbuffer.h"
 
 #include <netdb.h>
@@ -1253,3 +1252,9 @@ virSocketAddrPTRDomain(const virSocketAddr *addr,
     ret = -2;
     goto cleanup;
 }
+
+void
+virSocketAddrFree(virSocketAddrPtr addr)
+{
+    VIR_FREE(addr);
+}
diff --git a/src/util/virsocketaddr.h b/src/util/virsocketaddr.h
index 3029338..66f5998 100644
--- a/src/util/virsocketaddr.h
+++ b/src/util/virsocketaddr.h
@@ -24,14 +24,15 @@
 #ifndef __VIR_SOCKETADDR_H__
 # define __VIR_SOCKETADDR_H__
 
-# include "internal.h"
-
 # include <netinet/in.h>
 # include <sys/socket.h>
 # ifdef HAVE_SYS_UN_H
 #  include <sys/un.h>
 # endif
 
+# include "internal.h"
+# include "viralloc.h"
+
 /* On architectures which lack these limits, define them (ie. Cygwin).
  * Note that the libvirt code should be robust enough to handle the
  * case where actual value is longer than these limits (eg. by setting
@@ -162,4 +163,8 @@ int virSocketAddrPTRDomain(const virSocketAddr *addr,
                            char **ptr)
     ATTRIBUTE_NONNULL(1) ATTRIBUTE_NONNULL(3);
 
+void virSocketAddrFree(virSocketAddrPtr addr);
+
+VIR_DEFINE_AUTOPTR_FUNC(virSocketAddr, virSocketAddrFree)
+
 #endif /* __VIR_SOCKETADDR_H__ */
-- 
1.8.3.1




More information about the libvir-list mailing list