On Thu, Feb 02, 2012 at 17:33:22 -0700, Eric Blake wrote: > Our HACKING discourages use of malloc and free, for at least > a couple of years now. But we weren't enforcing it, until now :) > > For now, I've exempted python and tests, and will clean those up > in subsequent patches. Examples should be permanently exempt, > since anyone copying our examples won't have use of our > internal-only memory.h via libvirt_util.la. > > * cfg.mk (sc_prohibit_raw_allocation): New rule. > (exclude_file_name_regexp--sc_prohibit_raw_allocation): and > exemptions. > * src/cpu/cpu.c (cpuDataFree): Avoid false positive. > * src/conf/network_conf.c (virNetworkDNSSrvDefParseXML): Fix > offenders. > * src/libxl/libxl_conf.c (libxlMakeDomBuildInfo, libxlMakeVfb) > (libxlMakeDeviceModelInfo): Likewise. > * src/rpc/virnetmessage.c (virNetMessageSaveError): Likewise. > * tools/virsh.c (_vshMalloc, _vshCalloc): Likewise. > --- > cfg.mk | 9 +++++++++ > src/conf/network_conf.c | 2 +- > src/cpu/cpu.c | 4 ++-- > src/libxl/libxl_conf.c | 13 +++++++------ > src/rpc/virnetmessage.c | 23 ++++++++++++----------- > tools/virsh.c | 9 +++++---- > 6 files changed, 36 insertions(+), 24 deletions(-) > > diff --git a/cfg.mk b/cfg.mk > index c13db18..f91c90c 100644 > --- a/cfg.mk > +++ b/cfg.mk > @@ -316,6 +316,12 @@ sc_prohibit_internal_functions: > halt='use VIR_ macros instead of internal functions' \ > $(_sc_search_regexp) > > +# Avoid raw malloc and free, except in documentation comments. > +sc_prohibit_raw_allocation: > + @prohibit='^.[^*].*\<((m|c|re)alloc|free) *\([^)]' \ > + halt='use VIR_ macros from memory.h instead of malloc/free' \ > + $(_sc_search_regexp) > + > # Avoid functions that can lead to double-close bugs. > sc_prohibit_close: > @prohibit='([^>.]|^)\<[fp]?close *\(' \ > @@ -737,6 +743,9 @@ exclude_file_name_regexp--sc_prohibit_newline_at_end_of_diagnostic = \ > exclude_file_name_regexp--sc_prohibit_nonreentrant = \ > ^((po|tests)/|docs/.*py$$|tools/(virsh|console)\.c$$) > > +exclude_file_name_regexp--sc_prohibit_raw_allocation = \ > + ^(src/util/memory\.[ch]|(examples|python|tests)/.*)$$ > + > exclude_file_name_regexp--sc_prohibit_readlink = ^src/util/util\.c$$ > > exclude_file_name_regexp--sc_prohibit_setuid = ^src/util/util\.c$$ ... > diff --git a/src/cpu/cpu.c b/src/cpu/cpu.c > index 1f39934..01c31bb 100644 > --- a/src/cpu/cpu.c > +++ b/src/cpu/cpu.c > @@ -1,7 +1,7 @@ > /* > * cpu.c: internal functions for CPU manipulation > * > - * Copyright (C) 2009-2011 Red Hat, Inc. > + * Copyright (C) 2009-2012 Red Hat, Inc. > * > * This library is free software; you can redistribute it and/or > * modify it under the terms of the GNU Lesser General Public > @@ -220,7 +220,7 @@ cpuDataFree(const char *arch, > return; > } > > - driver->free(data); > + (driver->free)(data); > } I was wondering why you changed this but then I realized it's just to shut up your new syntax-check rule. Nice. ACK Jirka -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list