summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-10-17 18:01:47 +0200
committerEike Rathke <erack@redhat.com>2013-10-17 17:02:29 +0000
commit5f13aa4eae758e6592b73b3de3a62a5d94c45a9f (patch)
treea82c532d04202555c5cdde662ab2be565d2eed87
parent8a955a1f86c4578d4d0442baee7bbf4b6e37175a (diff)
fdo#70319 "exponent followed by at least on digit" also for special case 0.0
Change-Id: I07e7917417b8a22cf6d64f2b7a447f9084b9fa2d (cherry picked from commit 7bbd58eafc3146abcefc73d2d1ca6869bb47ef5a) Reviewed-on: https://gerrit.libreoffice.org/6294 Reviewed-by: Eike Rathke <erack@redhat.com> Tested-by: Eike Rathke <erack@redhat.com>
-rw-r--r--sal/qa/rtl/math/test-rtl-math.cxx6
-rw-r--r--sal/rtl/math.cxx4
2 files changed, 10 insertions, 0 deletions
diff --git a/sal/qa/rtl/math/test-rtl-math.cxx b/sal/qa/rtl/math/test-rtl-math.cxx
index 3ebdb157d463..c0ccaaae5225 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/math.cxx b/sal/rtl/math.cxx
index f66039a4a3ad..3bca17156c3a 100644
--- a/sal/rtl/math.cxx
+++ b/sal/rtl/math.cxx
@@ -819,6 +819,10 @@ inline double stringToDouble(CharT const * pBegin, CharT const * pEnd,
// offset
while (p != pEnd && rtl::isAsciiDigit(*p))
++p;
+ if (p == pFirstExpDigit)
+ { // no digits in exponent, reset end of scan
+ p = pExponent;
+ }
}
else
{