[Libreoffice-commits] core.git: Branch 'libreoffice-5-2' - include/formula
Eike Rathke
erack at redhat.com
Tue Sep 13 17:29:11 UTC 2016
include/formula/errorcodes.hxx | 9 ++++++---
1 file changed, 6 insertions(+), 3 deletions(-)
New commits:
commit ca19404c254c306d31a332958da5dde5d69a8d20
Author: Eike Rathke <erack at redhat.com>
Date: Tue Sep 13 15:26:09 2016 +0200
recognize NaN with no bits set in lower word as error
Which can happen for example for -nan(0x8000000000000) as a result of
calculating with -inf. This was displayed as NaN instead of a proper error
value, now #NUM!
Example test case:
=FORECAST.ETS.ADD(50, {-1,-2,-3,-4}, {10,20,30,40})
Change-Id: I1e1d95e1f188e0036b72be37dd20039c9a9a13f6
(cherry picked from commit 4ef10fce39575ec0bd3793b5fdf731c0b9af25a3)
Reviewed-on: https://gerrit.libreoffice.org/28867
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Caolán McNamara <caolanm at redhat.com>
Tested-by: Caolán McNamara <caolanm at redhat.com>
diff --git a/include/formula/errorcodes.hxx b/include/formula/errorcodes.hxx
index 13597b9..173c744 100644
--- a/include/formula/errorcodes.hxx
+++ b/include/formula/errorcodes.hxx
@@ -103,11 +103,14 @@ inline sal_uInt16 GetDoubleErrorValue( double fVal )
return 0;
if ( ::rtl::math::isInf( fVal ) )
return errIllegalFPOperation; // normal INF
- sal_uInt32 nErr = reinterpret_cast< sal_math_Double * >(
- &fVal)->nan_parts.fraction_lo;
+ sal_uInt32 nErr = reinterpret_cast< sal_math_Double * >( &fVal)->nan_parts.fraction_lo;
if ( nErr & 0xffff0000 )
return errNoValue; // just a normal NAN
- return (sal_uInt16)(nErr & 0x0000ffff); // any other error
+ if (!nErr)
+ // Another NAN, e.g. -nan(0x8000000000000) from calculating with -inf
+ return errIllegalFPOperation;
+ // Any other error known to us as error code.
+ return (sal_uInt16)(nErr & 0x0000ffff);
}
} // namespace formula
More information about the Libreoffice-commits
mailing list