On Thu, Jul 31, 2014 at 6:39 AM, Fritjof Bornebusch <[email protected]> wrote: > On Wed, Jul 30, 2014 at 07:37:29PM -0700, patrick keshishian wrote: >> On Wed, Jul 30, 2014 at 10:14:54PM +0200, Fritjof Bornebusch wrote: >> > Hi tech, >> > >> > there is an unnecessary NULL check before calling free. >> > >> > fritjof >> > >> > Index: xmalloc.c >> > =================================================================== >> > RCS file: /cvs/src/usr.bin/rcs/xmalloc.c,v >> > retrieving revision 1.4 >> > diff -u -p -r1.4 xmalloc.c >> > --- xmalloc.c 7 Jun 2009 08:39:13 -0000 1.4 >> > +++ xmalloc.c 31 May 2014 19:19:18 -0000 >> > @@ -76,8 +76,6 @@ xrealloc(void *ptr, size_t nmemb, size_t >> > void >> > xfree(void *ptr) >> > { >> > - if (ptr == NULL) >> > - errx(1, "xfree: NULL pointer given as argument"); >> > free(ptr); >> > } >> >> >> Going by this context, a quick grep in src/usr.bin/rcs, and >> especially the error message, the NULL check's purpose is to >> catach this condition. >> >> The code you claim to correct: >> >> > there is an unnecessary NULL check before calling free. >> >> would have been of the form: >> >> if (ptr != NULL) -or- if (ptr == NULL) >> free(ptr); return; >> > That is true, but free() can handle NULL itself: > > ... > /* This is legal. */ > if (ptr == NULL) > return; > .... > > That's why there is no need, to use a condition like: > if(ptr == NULL) > errx(1, "xfree: NULL pointer given as argument"); > >> --patrick >> > fritjof >
For educational purpose i guess humanity need a <free(NULL) is valid> T shirt, i learned it in the mailing list around a year ago. Maybe the back would be if not, patch your OS, or better use OpenBSD -- --------------------------------------------------------------------------------------------------------------------- () ascii ribbon campaign - against html e-mail /\
