basic/source/runtime/methods.cxx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-)
New commits: commit e8638ad5a7196ea79d90415b86a99a4c9f110a5e Author: Eike Rathke <er...@redhat.com> Date: Fri Mar 22 17:42:20 2013 +0100 in Val() check status after stringToDouble() instead of calling checkArithmeticOverflow() Change-Id: I2e3307ee054db77bab0a106d886823dba9e56ea8 diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx index 0318b82..76c8dd9 100644 --- a/basic/source/runtime/methods.cxx +++ b/basic/source/runtime/methods.cxx @@ -1782,9 +1782,20 @@ RTLFUNC(Val) } else { - // #57844 use localized function - nResult = ::rtl::math::stringToDouble( aStr, '.', ',', NULL, NULL ); - checkArithmeticOverflow( nResult ); + rtl_math_ConversionStatus eStatus = rtl_math_ConversionStatus_Ok; + sal_Int32 nParseEnd = 0; + nResult = ::rtl::math::stringToDouble( aStr, '.', ',', &eStatus, &nParseEnd ); + if ( eStatus != rtl_math_ConversionStatus_Ok ) + StarBASIC::Error( SbERR_MATH_OVERFLOW ); + /* TODO: we should check whether all characters were parsed here, + * but earlier code silently ignored trailing nonsense such as "1x" + * resulting in 1 with the side effect that any alpha-only-string + * like "x" resulted in 0. Not changing that now (2013-03-22) as + * user macros may rely on it. */ +#if 0 + else if ( nParseEnd != aStr.getLength() ) + StarBASIC::Error( SbERR_CONVERSION ); +#endif } rPar.Get(0)->PutDouble( nResult ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits