On Tue, Mar 15, 2011 at 11:02:38AM +0100, Jim Meyering wrote:
> > Instead of "please let us know", maybe recommend using
> > __builtin_expect instead? E.g. something like
> >
> > if (__builtin_expect (ptr != NULL, 0))
> > free (ptr);
>
> Good idea. Thanks.
> Though how about avoiding the double negative?
>
> if (__builtin_expect (ptr == NULL, 1))
> free (ptr);
What double negative? if (__builtin_expect (ptr != NULL, 0)) free (ptr);
is certainly correct, the latter is wrong, it will leak memory.
It will call free only if ptr is NULL, i.e. do a useless free (NULL),
if it is non-NULL, it will not do anything.
You could do
if (!__builtin_expect (ptr == NULL, 1))
free (ptr);
but that doesn't seem to be nicer or clearer than
if (__builtin_expect (ptr != NULL, 0))
free (ptr);
Jakub