Kaydet (Commit) 695671eb authored tarafından Stephan Bergmann's avatar Stephan Bergmann

Avoid inaccurate floating-point computations

...otherwise at least my --disable-dbgutil --disable-debug Linux x86_64 build
failed the CppunitTest_sax_cpputest with 8999999 vs. 9000000 nanoseconds.

Change-Id: I05e0febf413f9f9e01227a0cc4e0f46a5243fe61
üst 0b2bc82f
......@@ -1122,9 +1122,13 @@ bool Converter::convertDuration(util::Duration& rDuration,
{
if (-1 != nTemp)
{
const sal_Int32 nDigits = std::min<sal_Int32>(nPos - nStart, 9);
OSL_ENSURE(nDigits > 0, "bad code monkey: negative digits");
nNanoSeconds=static_cast<double>(nTemp)*(1000000000.0/pow(10.0,nDigits));
nNanoSeconds = nTemp;
sal_Int32 nDigits = nPos - nStart;
assert(nDigits >= 0 && nDigits <= 9);
for (; nDigits < 9; ++nDigits)
{
nNanoSeconds *= 10;
}
nTemp=-1;
if ('S' == string[nPos])
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment