Index: src/OFString.m ================================================================== --- src/OFString.m +++ src/OFString.m @@ -2380,10 +2380,13 @@ base = 8; UTF8String++; } } + + if (base == 0) + base = 10; while (*UTF8String != '\0') { unsigned char c = of_ascii_toupper(*UTF8String++); if (c >= '0' && c <= '9') @@ -2452,10 +2455,13 @@ base = 8; UTF8String++; } } + + if (base == 0) + base = 10; while (*UTF8String != '\0') { unsigned char c = of_ascii_toupper(*UTF8String++); if (c >= '0' && c <= '9') Index: tests/OFStringTests.m ================================================================== --- tests/OFStringTests.m +++ tests/OFStringTests.m @@ -1081,10 +1081,11 @@ C(@"\r\n+123 ").longLongValue == 123 && C(@"-500\t").longLongValue == -500 && [C(@"-0x10\t") longLongValueWithBase: 0] == -0x10 && C(@"\t\t\r\n").longLongValue == 0 && [C(@"123f") longLongValueWithBase: 16] == 0x123f && + [C(@"-1234") longLongValueWithBase: 0] == -1234 && [C(@"\t\n0xABcd\r") longLongValueWithBase: 0] == 0xABCD && [C(@"1234567") longLongValueWithBase: 8] == 01234567 && [C(@"\r\n0123") longLongValueWithBase: 0] == 0123 && [C(@"765\t") longLongValueWithBase: 8] == 0765 && [C(@"\t\t\r\n") longLongValueWithBase: 8] == 0) @@ -1092,10 +1093,11 @@ TEST(@"-[unsignedLongLongValue]", C(@"1234").unsignedLongLongValue == 1234 && C(@"\r\n+123 ").unsignedLongLongValue == 123 && C(@"\t\t\r\n").unsignedLongLongValue == 0 && [C(@"123f") unsignedLongLongValueWithBase: 16] == 0x123f && + [C(@"1234") unsignedLongLongValueWithBase: 0] == 1234 && [C(@"\t\n0xABcd\r") unsignedLongLongValueWithBase: 0] == 0xABCD && [C(@"1234567") unsignedLongLongValueWithBase: 8] == 01234567 && [C(@"\r\n0123") unsignedLongLongValueWithBase: 0] == 0123 && [C(@"765\t") unsignedLongLongValueWithBase: 8] == 0765 && [C(@"\t\t\r\n") unsignedLongLongValueWithBase: 8] == 0)