[libvirt] [PATCH v1 05/32] util: netdev: define cleanup function using VIR_DEFINE_AUTOPTR_FUNC

Erik Skultety eskultet at redhat.com
Tue Aug 7 16:04:37 UTC 2018


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 at 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




More information about the libvir-list mailing list