Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -2501,10 +2501,14 @@ [stripped caseInsensitiveCompare: @"INFINITY"] == OF_ORDERED_SAME) return INFINITY; if ([stripped caseInsensitiveCompare: @"-INF"] == OF_ORDERED_SAME || [stripped caseInsensitiveCompare: @"-INFINITY"] == OF_ORDERED_SAME) return -INFINITY; + if ([stripped caseInsensitiveCompare: @"NAN"] == OF_ORDERED_SAME) + return NAN; + if ([stripped caseInsensitiveCompare: @"-NAN"] == OF_ORDERED_SAME) + return -NAN; #ifdef HAVE_STRTOF_L const char *UTF8String = self.UTF8String; #else /* @@ -2550,10 +2554,14 @@ [stripped caseInsensitiveCompare: @"INFINITY"] == OF_ORDERED_SAME) return INFINITY; if ([stripped caseInsensitiveCompare: @"-INF"] == OF_ORDERED_SAME || [stripped caseInsensitiveCompare: @"-INFINITY"] == OF_ORDERED_SAME) return -INFINITY; + if ([stripped caseInsensitiveCompare: @"NAN"] == OF_ORDERED_SAME) + return NAN; + if ([stripped caseInsensitiveCompare: @"-NAN"] == OF_ORDERED_SAME) + return -NAN; #ifdef HAVE_STRTOD_L const char *UTF8String = self.UTF8String; #else /* Index: tests/OFStringTests.m ================================================================== --- tests/OFStringTests.m +++ tests/OFStringTests.m @@ -1108,11 +1108,12 @@ */ TEST(@"-[floatValue]", C(@"\t-0.25 ").floatValue == -0.25 && C(@"\r\n\tINF\t\n").floatValue == INFINITY && C(@"\r -INFINITY\n").floatValue == -INFINITY && - isnan(C(@" NAN\t\t").floatValue)) + isnan(C(@" NAN\t\t").floatValue) && + isnan(C(@" -NaN\t\t").floatValue)) #if !defined(OF_ANDROID) && !defined(OF_SOLARIS) && !defined(OF_DJGPP) && \ !defined(OF_AMIGAOS_M68K) # define INPUT @"\t-0x1.FFFFFFFFFFFFFP-1020 " # define EXPECTED -0x1.FFFFFFFFFFFFFP-1020