Overview
Comment: | OFNumber: Correctly handle NAN. |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA3-256: |
bc2f7c2124cda3ee20efcade26c93d8f |
User & Date: | js on 2013-07-08 21:34:44 |
Other Links: | manifest | tags |
Context
2013-07-08
| ||
22:20 | OFFile: Check arguments for nil. check-in: b4ebcc74b1 user: js tags: trunk | |
21:34 | OFNumber: Correctly handle NAN. check-in: bc2f7c2124 user: js tags: trunk | |
16:00 | Add a define to indicate forwarding stret is safe. check-in: b63feee32d user: js tags: trunk | |
Changes
Modified src/OFNumber.m from [779309786a] to [ae2aab0b1f].
︙ | ︙ | |||
984 985 986 987 988 989 990 | OFNumber *number; if (![object isKindOfClass: [OFNumber class]]) return false; number = object; | | > | > > > > > > > > | 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 | OFNumber *number; if (![object isKindOfClass: [OFNumber class]]) return false; number = object; if (_type & OF_NUMBER_FLOAT || number->_type & OF_NUMBER_FLOAT) { double value1 = [number doubleValue]; double value2 = [self doubleValue]; if (isnan(value1) && isnan(value2)) return true; if (isnan(value1) || isnan(value2)) return false; return (value1 == value2); } if (_type & OF_NUMBER_SIGNED || number->_type & OF_NUMBER_SIGNED) return ([number intMaxValue] == [self intMaxValue]); return ([number uIntMaxValue] == [self uIntMaxValue]); } |
︙ | ︙ | |||
1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 | if (type & OF_NUMBER_FLOAT) { union { double d; uint8_t b[sizeof(double)]; } d; uint_fast8_t i; d.d = OF_BSWAP_DOUBLE_IF_BE([self doubleValue]); for (i = 0; i < sizeof(double); i++) OF_HASH_ADD(hash, d.b[i]); } else if (type & OF_NUMBER_SIGNED) { intmax_t v = [self intMaxValue] * -1; | > > > | 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 | if (type & OF_NUMBER_FLOAT) { union { double d; uint8_t b[sizeof(double)]; } d; uint_fast8_t i; if (isnan([self doubleValue])) return 0; d.d = OF_BSWAP_DOUBLE_IF_BE([self doubleValue]); for (i = 0; i < sizeof(double); i++) OF_HASH_ADD(hash, d.b[i]); } else if (type & OF_NUMBER_SIGNED) { intmax_t v = [self intMaxValue] * -1; |
︙ | ︙ |