r21508 - gnucash/trunk/src/gnome - Protect strcmp from crashing on NULL values

Geert Janssens janssens-geert at telenet.be
Mon Oct 31 11:07:40 EDT 2011


On maandag 31 oktober 2011, Derek Atkins wrote:
> Geert Janssens <gjanssens at code.gnucash.org> writes:
> > -    if(strcmp(order, DEFAULT_SORT_ORDER) != 0)
> > +    if (order && (strcmp (order, DEFAULT_SORT_ORDER) != 0))
> 
> Why not use safe_strcmp()?
> 
> -derek

I could have, but in this case only using safe_strcmp would still yield the 
wrong result. Using safe_strcmp, if order were NULL, then the test would 
evaluate to TRUE (a NULL value is always not equal to a non-null value) and 
the "then" part would be executed. However, in this case if order is NULL, the 
"then" part has to be skipped.

And by the way, I don't see much use for safe_strcmp anymore in gnucash. I'd 
rather user g_strcmp0, which behaves exactly the same, but is part of glibc. 
Our code is heavily dependent on glibc anyway, so I prefer to use its 
convenience functions over maintaining our own.

Geert


More information about the gnucash-devel mailing list