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

Daniel P. Berrangé berrange at redhat.com
Tue Aug 7 16:06:34 UTC 2018


On Tue, Aug 07, 2018 at 06:04:37PM +0200, Erik Skultety wrote:
> 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.

Worth checking a mingw build too, since mingw disables some stuff that
is still present on OS-X, so might tickle further code path variations.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|




More information about the libvir-list mailing list