[Spice-devel] [PATCH spice-server] display-channel: Check that all structure are destroyed during finalize

Christophe Fergeau cfergeau at redhat.com
Fri Aug 25 12:16:36 UTC 2017


On Thu, Aug 24, 2017 at 05:11:34AM -0400, Frediano Ziglio wrote:
> > 
> > On Tue, 2017-08-22 at 08:54 +0100, Frediano Ziglio wrote:
> > > The leak detector we use currently is not enough to detect
> > > some kind of leak in DisplayChannel so manully test.
> > > These tests are enabled only when --enable-extra-checks is passed
> > > to configure.
> > 
> > 
> > Out of curiosity, did you find a bug that made you add this extra
> > check?
> > 
> 
> No, was more some old code I wrote (I think more than 1 year ago)
> when I started my "cleanup" branch.
> 
> > > 
> > > Signed-off-by: Frediano Ziglio <fziglio at redhat.com>
> > > ---
> > >  configure.ac             |  2 ++
> > >  server/display-channel.c | 22 ++++++++++++++++++++++
> > >  2 files changed, 24 insertions(+)
> > > 
> > > diff --git a/configure.ac b/configure.ac
> > > index e1e74862..7fec66fc 100644
> > > --- a/configure.ac
> > > +++ b/configure.ac
> > > @@ -247,6 +247,8 @@ AC_ARG_ENABLE([extra-checks],
> > >                 AS_HELP_STRING([--enable-extra-
> > > checks=@<:@yes/no@:>@],
> > >                                [Enable expensive checks
> > > @<:@default=no@:>@]))
> > >  AM_CONDITIONAL(ENABLE_EXTRA_CHECKS, test "$enable_extra_checks" =
> > > "yes")
> > > +AC_DEFINE_UNQUOTED([ENABLE_EXTRA_CHECKS], [$(test
> > > "x$enable_extra_checks" = xyes && echo 1 || echo 0)],
> > > +                   [Define to 1 to enable extra checks on code])
> 
> A bit of note on this. Usually AC_DEFINEs are not defined or defined
> to 1. This is defined to 0 or 1 which is a bit different from the
> standard. However code like:
> 
>    if (ENABLE_EXTRA_CHECKS)
> 
> cause a compiler error. Maybe the comment "Define to 1 to enable
> extra checks on code" should be more explicit about it?
> On the other way this should affect only people that needs
> to edit manually config.h and as said would be generating a
> compiler error if they undefine that constant.
> A difference from the standard is that code like
> 
> #ifdef ENABLE_EXTRA_CHECKS
> 
> should not be used. Maybe a syntax-check extension could help
> with this.

I would have gone with something more standard,

if test "x$enable_extra_checks" = xyes; then
  AC_DEFINE_UNQUOTED([ENABLE_EXTRA_CHECKS], 
                     [1],
                     [Define to 1 to enable extra checks on code otherwise defined to 0])
fi

and then

#ifdef ENABLE_EXTRA_CHECKS
static int enable_extra_checks = 1;
#else
static int enable_extra_checks = 0;
#endif

if (enable_extra_checks) {
}

Christophe


More information about the Spice-devel mailing list