From: Michael B. <mic...@gm...> - 2012-06-28 15:06:32
|
On Thu, 28 Jun 2012 11:22:21 -0300 Gustavo Sverzut Barbieri <bar...@pr...> wrote: > On Thursday, June 28, 2012, Michael Blumenkrantz wrote: > > > On Wed, 27 Jun 2012 23:43:23 -0300 > > Raphael Kubo da Costa <rakuco@FreeBSD.org> wrote: > > > > > Cedric BAIL <ced...@fr... <javascript:;>> writes: > > > > > > > I personally think that eina_iterator_free like any free function > > > > should just work fine with NULL. I was against at that time, but > > > > others won. So we do have this incoherency where some of our free > > > > function work with NULL and some don't. > > > > > > So what can we do to improve the situation here (if it does need to be > > > improved)? Speaking more generically, what criteria are used to decide > > > that a function should be decorated with EINA_ARG_NONNULL and/or have > > > magic checks performed? > > > > > > > I am hugely in favor of having all _free() and _del() functions take NULL > > arguments without erroring. > > > I disagree, in regular situation it should never return a NULL handle, so > you should never have a NULL handle to free. If that happened you did some > mistake in the code and it's easier to spot and fix. > > Compatibility with libc is moot: should we also crash on other functions as > well?! :-) > > > > > > > > > ------------------------------------------------------------------------------ > > Live Security Virtual Conference > > Exclusive live event will cover all the ways today's security and > > threat landscape has changed and how IT managers can respond. Discussions > > will include endpoint security, mobile security and the latest in malware > > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > > _______________________________________________ > > enlightenment-devel mailing list > > enl...@li... <javascript:;> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel > > > > You're making a slippery slope argument (http://en.wikipedia.org/wiki/Slippery_slope). My statement, and the one I was referencing, was about free and delete functions, not on all functions. Your insinuation that allowing silent passing of a NULL param to deletion functions would cause crashes is inane; the purpose of this is to simplify if (X) del(X), which is annoying and pointless. libc understands this, which is why it doesn't crash on free(NULL). A "regular situation" such as you claim never occurs does, in fact, happen in literally every single cleanup function in every app and library. |