[Libvir] [PATCH] Check calls to printf-like functions (and some fixes)

Daniel P. Berrange berrange at redhat.com
Mon Mar 12 17:43:49 UTC 2007


On Mon, Mar 12, 2007 at 05:32:38PM +0000, Richard W.M. Jones wrote:
> Daniel P. Berrange wrote:
> >On Mon, Mar 12, 2007 at 05:16:52PM +0000, Richard W.M. Jones wrote:
> >>* Fix qemudDebug when debug not enabled
> >
> >Its not clear what was broken about the existing code ?
> >
> >This chunk:
> >
> >> #ifdef ENABLE_DEBUG
> >> #define qemudDebug(...) qemudLog(QEMUD_DEBUG, __VA_ARGS__)
> >> #else
> >>-#define qemudDebug(fmt, ...) do { } while(0);
> >>+#define qemudDebug(fmt, ...)
> >> #endif
> >
> >Will break / silently change code semantics, if qemudDebug is used in
> >situations like
> >
> >
> >   if (foo)
> >     qemudDebug("blah")
> >   wizz()
> 
> I mean this code _looks_ incorrect even if it actually isn't because of 
> the extra ';' in the macro.

The extra ; in the macro definition is bogus. I did actually mean to 
show

   if (foo)
      qemudDebug("blah");

Which would then turn into

   if (foo)
      ;

Which causes GCC to complain with

  cc1: warnings being treated as errors
  driver.c: In function ‘qemudMonitorCommand’:
  driver.c:101: warning: empty body in an if-statement

If you have empty  do{}while(0)   then gcc won't complain.

So all we need do is drop the extra ';' from the #define for qemudDebug,
but keep the empty loop

Dan.
-- 
|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 




More information about the libvir-list mailing list