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
/\

Reply via email to