[Libreoffice-commits] core.git: Branch 'libreoffice-4-0-6' - sal/qa sal/rtl

Stephan Bergmann sbergman at redhat.com
Thu Oct 17 11:39:51 PDT 2013


 sal/qa/rtl/math/test-rtl-math.cxx |    6 ++++++
 sal/rtl/source/math.cxx           |    4 ++++
 2 files changed, 10 insertions(+)

New commits:
commit 23c7aeb5ec633674a51b41e936ad9708e502841b
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Oct 17 18:01:47 2013 +0200

    fdo#70319 "exponent followed by at least on digit" also for special case 0.0
    
    (cherry picked from commit 7bbd58eafc3146abcefc73d2d1ca6869bb47ef5a)
    Conflicts:
    	sal/rtl/math.cxx
    
    Change-Id: I07e7917417b8a22cf6d64f2b7a447f9084b9fa2d
    Reviewed-on: https://gerrit.libreoffice.org/6296
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>
    Reviewed-by: Björn Michaelsen <bjoern.michaelsen at canonical.com>
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sal/qa/rtl/math/test-rtl-math.cxx b/sal/qa/rtl/math/test-rtl-math.cxx
index 8f6578c..3929a53 100644
--- a/sal/qa/rtl/math/test-rtl-math.cxx
+++ b/sal/qa/rtl/math/test-rtl-math.cxx
@@ -81,6 +81,12 @@ public:
         CPPUNIT_ASSERT_EQUAL(rtl_math_ConversionStatus_Ok, status);
         CPPUNIT_ASSERT_EQUAL(sal_Int32(RTL_CONSTASCII_LENGTH("1")), end);
         CPPUNIT_ASSERT_EQUAL(1.0, res);
+        res = rtl::math::stringToDouble(
+            rtl::OUString("0e"),
+            sal_Unicode('.'), sal_Unicode(','), &status, &end);
+        CPPUNIT_ASSERT_EQUAL(rtl_math_ConversionStatus_Ok, status);
+        CPPUNIT_ASSERT_EQUAL(sal_Int32(RTL_CONSTASCII_LENGTH("1")), end);
+        CPPUNIT_ASSERT_EQUAL(0.0, res);
     }
 
     CPPUNIT_TEST_SUITE(Test);
diff --git a/sal/rtl/source/math.cxx b/sal/rtl/source/math.cxx
index e5c44d5..ec2bfc4 100644
--- a/sal/rtl/source/math.cxx
+++ b/sal/rtl/source/math.cxx
@@ -825,6 +825,10 @@ inline double stringToDouble(CharT const * pBegin, CharT const * pEnd,
                 // offset
                 while (p != pEnd && isDigit(*p))
                     ++p;
+                if (p == pFirstExpDigit)
+                {   // no digits in exponent, reset end of scan
+                    p = pExponent;
+                }
             }
             else
             {


More information about the Libreoffice-commits mailing list