Author: rfm
Date: Sat Nov 29 12:02:23 2014
New Revision: 38213
URL: http://svn.gna.org/viewcvs/gnustep?rev=38213&view=rev
Log:
fix (and test) for bug #43722
Modified:
libs/base/trunk/ChangeLog
libs/base/trunk/Source/NSScanner.m
libs/base/trunk/Tests/base/NSString/test07.m
Modified: libs/base/trunk/ChangeLog
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/ChangeLog?rev=38213&r1=38212&r2=38213&view=diff
==============================================================================
--- libs/base/trunk/ChangeLog (original)
+++ libs/base/trunk/ChangeLog Sat Nov 29 12:02:23 2014
@@ -1,3 +1,8 @@
+2014-11-29 Richard Frith-Macdonald <[email protected]>
+
+ * Source/NSScanner.m: Fixup error in scanning doubles with excess
+ precision (bug #43722).
+
2014-11-28 [email protected]
* Source/NSThread.m: Set thread name visible to OS
@@ -19,7 +24,7 @@
2014-11-20 Richard Frith-Macdonald <[email protected]>
- * Source/NSRunLoop.m: Avoinf some unnecessary retain/release cycles.
+ * Source/NSRunLoop.m: Avoind some unnecessary retain/release cycles.
2014-11-05 Richard Frith-Macdonald <[email protected]>
Modified: libs/base/trunk/Source/NSScanner.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Source/NSScanner.m?rev=38213&r1=38212&r2=38213&view=diff
==============================================================================
--- libs/base/trunk/Source/NSScanner.m (original)
+++ libs/base/trunk/Source/NSScanner.m Sat Nov 29 12:02:23 2014
@@ -1243,6 +1243,7 @@
int exponent = 0;
BOOL negativeMantissa = NO;
BOOL negativeExponent = NO;
+ BOOL extra = NO;
unsigned pos = 0;
int mantissaLength;
int dotPos = -1;
@@ -1301,14 +1302,8 @@
{
/* Mantissa too long ... ignore excess.
*/
- if (19 == mantissaLength && (dotPos < 0 || dotPos >= mantissaLength))
- {
- mantissaLength--;
- }
- else
- {
- mantissaLength = 19;
- }
+ mantissaLength = 18;
+ extra = YES;
}
if (dotPos < 0)
{
Modified: libs/base/trunk/Tests/base/NSString/test07.m
URL:
http://svn.gna.org/viewcvs/gnustep/libs/base/trunk/Tests/base/NSString/test07.m?rev=38213&r1=38212&r2=38213&view=diff
==============================================================================
--- libs/base/trunk/Tests/base/NSString/test07.m (original)
+++ libs/base/trunk/Tests/base/NSString/test07.m Sat Nov 29 12:02:23 2014
@@ -28,6 +28,26 @@
d = [@" 1.2" doubleValue];
PASS(d > 1.199999 && d < 1.200001, "doubleValue with leading space works");
+ s = @"50.6468746467461646";
+ sscanf([s UTF8String], "%lg", &d);
+ PASS(EQ([s doubleValue], d), "50.6468746467461646 -doubleValue OK");
+
+ s = @"50.64687464674616461";
+ sscanf([s UTF8String], "%lg", &d);
+ PASS(EQ([s doubleValue], d), "50.64687464674616461 -doubleValue OK");
+
+ s = @"0.646874646746164616898211";
+ sscanf([s UTF8String], "%lg", &d);
+ PASS(EQ([s doubleValue], d), "0.646874646746164616898211 -doubleValue OK");
+
+ s = @"502.646874646746164";
+ sscanf([s UTF8String], "%lg", &d);
+ PASS(EQ([s doubleValue], d), "502.646874646746164 -doubleValue OK");
+
+ s = @"502.6468746467461646";
+ sscanf([s UTF8String], "%lg", &d);
+ PASS(EQ([s doubleValue], d), "502.6468746467461646 -doubleValue OK");
+
s = [NSString stringWithCharacters: &u length: 1];
PASS_EQUAL(s, @"£", "UTF-8 string literal matches 16bit unicode string");
_______________________________________________
Gnustep-cvs mailing list
[email protected]
https://mail.gna.org/listinfo/gnustep-cvs