Rob Farmer wrote:
> Line 323 in util.c is:
>       if( (float)(h->count+1)/h->size > 0.75f )
> The problem is, the first time this is run, the hash table (h) is
> empty, so h->size is 0 and you get a divide by zero error. I'm not
> sure why this is only appearing on NetBSD,

sometimes (some platforms?) floats raise NaN and don't signal. But 
really, the thing here to do is DON'T DIVIDE BY ZERO!

e.g. with a bit of algebra, assuming h->size is nonnegative, this is 
quite equivalent:
if( (float)(h->count+1) > 0.75f * h->size )
or even, does it need to use floats?:
if( (h->count+1) > h->size*3/4 )
or
if( (h->count+1)*4 > h->size*3 )

if you really want to divide for some aesthetic or practical reason, 
then check whether (h->size == 0) first.

-Isaac

------------------------------------------------------------------------------
This SF.Net email is sponsored by the Verizon Developer Community
Take advantage of Verizon's best-in-class app development support
A streamlined, 14 day to market process makes app distribution fast and easy
Join now and get one step closer to millions of Verizon customers
http://p.sf.net/sfu/verizon-dev2dev 
_______________________________________________
Fish-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/fish-users

Reply via email to