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(a)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