sxhash coerces long-float to long-double, causing underflows/overflows

This commit is contained in:
Juan Jose Garcia Ripoll 2010-11-07 23:48:58 +01:00
parent 1f9bf63cae
commit 5aa295182d

View file

@ -59,7 +59,7 @@ _hash_eql(cl_hashkey h, cl_object x)
/* We coerce to double because long double has extra bits
* that give rise to different hash key and are not
* meaningful */
double d = ecl_long_float(x);
long double d = ecl_long_float(x);
return hash_string(h, (unsigned char*)&d, sizeof(d));
}
#endif
@ -136,7 +136,7 @@ _hash_equal(int depth, cl_hashkey h, cl_object x)
/* We coerce to double because long double has extra bits
* that give rise to different hash key and are not
* meaningful */
double f = ecl_long_float(x);
long double f = ecl_long_float(x);
if (f == 0.0) f = 0.0;
return hash_string(h, (unsigned char*)&f, sizeof(f));
}