Date: Mon, 24 Sep 2012 09:47:45 +0100 From: David Chisnall <theraven@FreeBSD.org> To: Garrett Cooper <yanegomi@gmail.com> Cc: Konstantin Belousov <kostikbel@gmail.com>, Kevin Lo <kevlo@FreeBSD.org>, svn-src-all@FreeBSD.org, svn-src-head@FreeBSD.org, src-committers@FreeBSD.org Subject: Re: svn commit: r240850 - head/lib/libstand Message-ID: <E7AE8382-853A-41D9-981C-0C6A09785A53@FreeBSD.org> In-Reply-To: <CAGH67wQf5whjgQmXD3Ln_-r=WsLMYrBQUBj_G-HoGf1a5F_4cg@mail.gmail.com> References: <201209230838.q8N8c6Tu056083@svn.freebsd.org> <20120923105220.GL37286@deviant.kiev.zoral.com.ua> <CAGH67wQf5whjgQmXD3Ln_-r=WsLMYrBQUBj_G-HoGf1a5F_4cg@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On 23 Sep 2012, at 20:27, Garrett Cooper wrote: > +1. free(3) should silently ignore NULL parameters passed into it. Indeed. The C standard's description for free() states that: > If ptr is a null pointer, no action occurs. This means that a standards-compilant compiler is entirely at liberty to elide these checks (not sure if GCC or LLVM does, but both have optimisation passes that optimise based on assumptions about standard library functions, although they may not run when compiled in a freestanding environment). The only reasons for a NULL check before free() should be: - Sanity checking (i.e. this pointer is never meant to be NULL, assert that it isnt) - Recursive cleanup (don't dereference this pointer to clean up its elements if it is NULL) David
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?E7AE8382-853A-41D9-981C-0C6A09785A53>
