include/formula/errorcodes.hxx | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-)
New commits: commit ca19404c254c306d31a332958da5dde5d69a8d20 Author: Eike Rathke <er...@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 <c...@libreoffice.org> Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@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
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits