On 07/15/2014 10:04 PM, Eric Blake wrote: > Now that we've finally fixed all the violators, it's time to > enforce that any pointer to a const object is never freed (it > is aliasing some other memory, where the non-const original > should be freed instead). Alas, the code still needs a normal > vs. Coverity version, but at least we are still guaranteeing > that the macro call evaluates its argument exactly once. > > I verified that we still get the following compiler warnings, > which in turn halts the build thanks to -Werror on gcc (hmm, > gcc 4.8.3's placement of the ^ for ?: type mismatch is a bit > off, but that's not our problem): > > int oops1 = 0; > VIR_FREE(oops1); > const char *oops2 = NULL; > VIR_FREE(oops2); > struct blah { int dummy; } oops3; > VIR_FREE(oops3); > > util/virauthconfig.c:159:35: error: pointer/integer type mismatch in conditional expression [-Werror] > VIR_FREE(oops1); > ^ > util/virauthconfig.c:161:5: error: passing argument 1 of 'virFree' discards 'const' qualifier from pointer target type [-Werror] > VIR_FREE(oops2); > ^ > In file included from util/virauthconfig.c:28:0: > util/viralloc.h:79:6: note: expected 'void *' but argument is of type 'const void *' > void virFree(void *ptrptr) ATTRIBUTE_NONNULL(1); > ^ > util/virauthconfig.c:163:35: error: type mismatch in conditional expression > VIR_FREE(oops3); > ^ > > * src/util/viralloc.h (VIR_FREE): No longer cast away const. > * src/xenapi/xenapi_utils.c (xenSessionFree): Work around bogus > header. > > Signed-off-by: Eric Blake <eblake@xxxxxxxxxx> > --- > > v2: this depends on the existing 1/4, while being a replacement > to all of 2-4/4 at once. > https://www.redhat.com/archives/libvir-list/2014-July/msg00716.html > > src/util/viralloc.h | 11 +++++------ > src/xenapi/xenapi_utils.c | 4 +++- > 2 files changed, 8 insertions(+), 7 deletions(-) > This patch compiles for me with clang 3.4.1 and all the three VIR_FREEs above cause a warning. ACK Jan
Attachment:
signature.asc
Description: OpenPGP digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list