digitalmars.D.bugs - AA's indexed by doubles bug
- "Ben Hinkle" <ben.hinkle gmail.com> Mar 26 2005
- =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= Mar 26 2005
- Dave <Dave_member pathlink.com> Mar 28 2005
int main() {
int[double] x;
double d=22;
x[d] = 44;
assert( x[d] == 44 ); //fails
return 0;
}
Mar 26 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Ben Hinkle wrote:
| int main() {
| int[double] x;
| double d=22;
| x[d] = 44;
| assert( x[d] == 44 ); //fails
| return 0;
| }
Added to DStress as
http://dstress.kuehne.cn/run/associative_array_08.d
http://dstress.kuehne.cn/run/associative_array_09.d
http://dstress.kuehne.cn/run/associative_array_10.d
http://dstress.kuehne.cn/run/associative_array_11.d
http://dstress.kuehne.cn/run/associative_array_12.d
http://dstress.kuehne.cn/run/associative_array_13.d
http://dstress.kuehne.cn/run/associative_array_14.d
http://dstress.kuehne.cn/run/associative_array_15.d
http://dstress.kuehne.cn/run/associative_array_16.d
http://dstress.kuehne.cn/run/associative_array_17.d
Thomas
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.0 (MingW32)
iD8DBQFCRawB3w+/yD4P9tIRAusKAJ95bfpnJY5PoDZIKNC535VMzIv7KQCgihde
/4vmbhyQAF+b73zKpBGgaqI=
=wd3P
-----END PGP SIGNATURE-----
Mar 26 2005
In article <d24a39$3ic$1 digitaldaemon.com>, =?UTF-8?B?VGhvbWFzIEvDvGhuZQ==?= says...-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 Ben Hinkle wrote: | int main() { | int[double] x; | double d=22; | x[d] = 44; | assert( x[d] == 44 ); //fails | return 0; | } Added to DStress as http://dstress.kuehne.cn/run/associative_array_08.d http://dstress.kuehne.cn/run/associative_array_09.d http://dstress.kuehne.cn/run/associative_array_10.d http://dstress.kuehne.cn/run/associative_array_11.d http://dstress.kuehne.cn/run/associative_array_12.d http://dstress.kuehne.cn/run/associative_array_13.d http://dstress.kuehne.cn/run/associative_array_14.d http://dstress.kuehne.cn/run/associative_array_15.d http://dstress.kuehne.cn/run/associative_array_16.d http://dstress.kuehne.cn/run/associative_array_17.d Thomas
In the hope of saving a little time tracking these down, the problem looks like it is in the return statement for the relevant _compare(...) methods for each of those types in phobos/std/typeinfo/ti_<type>.d. For example, in phobos/std/typeinfo/ti_double.d: | static int _compare(double d1, double d2) | { | if (d1 !<>= d2) // if either are NaN | { | if (isnan(d1)) | { if (isnan(d2)) | return 0; | return -1; | } | return 1; | } |// return (d1 < d2) ? -1 : 1; // <-- problem here | return (d1 < d2) ? -1 : (d1 > d2) ? 1 : 0; | } - Dave
Mar 28 2005








Dave <Dave_member pathlink.com>