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>