On Fri, Apr 22, 2011 at 10:55:04AM -0600, Eric Blake wrote: > On 04/22/2011 10:31 AM, Christophe Fergeau wrote: > > -# define VIR_FREE(ptr) virFree(&(ptr)) > > +# define VIR_FREE(ptr) \ > > + do { void *check_type = (ptr); virFree(&(check_type)); } while (0) > > Not quite. That assigns check_type to NULL, rather than the intended > assignment of ptr. Ooops, indeed. Initially, I didn't change the parameter of virFree, but got "unused variable 'check_type'" warnings from gcc, so I went this way. Using ATTRIBUTE_UNUSED and not changing virFree parameter will indeed work better ;) > > I also get more warnings about casting from const to non-const, this can > > be avoided by making check_type const void *, but maybe these warnings > > indicate that something that shouldn't be freed is freed. > > How many warnings? If it's only a handful, we should start > investigating; if it's lots, then I'm not sure how much it buys us. I get 93 such warnings on a test build, I'll look at a few ones at random and report if that shows real bugs. Christophe
Attachment:
pgpNQHRfjRaKA.pgp
Description: PGP signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list