Parsing floating point numbers with very long precision was broken, and this patch fixes it. This fixes http://llvm.org/bugs/show_bug.cgi?id=15445.
git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@176711 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -240,4 +240,16 @@ int main()
|
||||
assert(iter.base() == str+sizeof(str)-1);
|
||||
assert(err == ios.failbit);
|
||||
}
|
||||
{
|
||||
v = -1;
|
||||
const char str[] = "3;14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651e+10";
|
||||
std::ios_base::iostate err = ios.goodbit;
|
||||
input_iterator<const char*> iter =
|
||||
f.get(input_iterator<const char*>(str),
|
||||
input_iterator<const char*>(str+sizeof(str)),
|
||||
ios, err, v);
|
||||
assert(iter.base() == str+sizeof(str)-1);
|
||||
assert(err == ios.goodbit);
|
||||
assert(std::abs(v - 3.14159265358979e+10)/3.14159265358979e+10 < 1.e-8);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user