On Tue, 2012-11-20 at 10:18 +0100, Petr Spacek wrote:
> Use memory allocation macros more extensively.
> Some scattered occurences of isc_mem_* functions was replaced by macros.
> Destroy_ldap_instance() now accepts NULL LDAP instance.
> String functions from str.c are still calling isc_mem_directly.
> This patch contain small subset of changes which affect new_ldap_instance()
> and destroy_ldap_instance() calls. Remaining changes do not require changes
> new_*/destroy_* logic and will follow in separate patch.
I am not sure what are ISC conventions, but in general Macros that
change program flow are quite dangerous *unless* you prominently make
clear that that's what they are doing.
So if you return or goto in a macro I suggest you make RETURN and GOTO
part of the name, otherwise inspection of the code will easily make
someone not notice that.
This can easily lead to memory leaks where you do not notice a
return/goto macro and the condition happen, as well as more serious
issues, like not seeing a return/goto after you obtained a lock or a
mutex and so on.
In general I would really avoid 'return' in a macro and at most do gotos
to some explicit label you can pass as argument of the macro.
Simo Sorce * Red Hat, Inc * New York
Freeipa-devel mailing list