On Tue, Aug 07, 2018 at 04:14:06PM +0100, Daniel P. Berrangé wrote:
On Sat, Jul 28, 2018 at 11:31:20PM +0530, Sukrit Bhatnagar wrote:
> 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 variables of type virNetDevRxFilterPtr and virNetDevMcastEntryPtr
> are declared using VIR_AUTOPTR, the functions virNetDevRxFilterFree
> and virNetDevMcastEntryFree, respectively, will be run
> automatically on them when they go out of scope.
>
> Signed-off-by: Sukrit Bhatnagar <skrtbhtngr(a)gmail.com>
> ---
> src/util/virnetdev.c | 9 ++++++++-
> src/util/virnetdev.h | 4 ++++
> 2 files changed, 12 insertions(+), 1 deletion(-)
>
> diff --git a/src/util/virnetdev.c b/src/util/virnetdev.c
> index 0777eca..9eca786 100644
> --- a/src/util/virnetdev.c
> +++ b/src/util/virnetdev.c
> @@ -29,7 +29,6 @@
> #include "virfile.h"
> #include "virerror.h"
> #include "vircommand.h"
> -#include "viralloc.h"
> #include "virpci.h"
> #include "virlog.h"
> #include "virstring.h"
> @@ -120,6 +119,14 @@ struct _virNetDevMcastEntry {
> virMacAddr macaddr;
> };
>
> +static void
> +virNetDevMcastEntryFree(virNetDevMcastEntryPtr entry)
> +{
> + VIR_FREE(entry);
> +}
> +
> +VIR_DEFINE_AUTOPTR_FUNC(virNetDevMcastEntry, virNetDevMcastEntryFree)
This causes a compile problem on non-linux platforms due to the function
being unused:
util/virnetdev.c:128:1: error: unused function 'virNetDevMcastEntryAutoPtrFree'
[-Werror,-Wunused-function]
VIR_DEFINE_AUTOPTR_FUNC(virNetDevMcastEntry, virNetDevMcastEntryFree)
^
./util/viralloc.h:612:24: note: expanded from macro 'VIR_DEFINE_AUTOPTR_FUNC'
static inline void VIR_AUTOPTR_FUNC_NAME(type)(type **_ptr) \
^
./util/viralloc.h:600:38: note: expanded from macro 'VIR_AUTOPTR_FUNC_NAME'
# define VIR_AUTOPTR_FUNC_NAME(type) type##AutoPtrFree
^
<scratch space>:21:1: note: expanded from here
virNetDevMcastEntryAutoPtrFree
^
1 error generated.
Sigh...yeah, there are a few of them, I had some notes in patches that actually
used the definitions, nevertheless should have been compilable on their own
with clang in the first place. I'm already running my local fix in Travis, I'll
be sending patches afterwards.
Erik