summaryrefslogtreecommitdiff
path: root/sal/qa
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2013-06-12 15:58:17 +0200
committerStephan Bergmann <sbergman@redhat.com>2013-06-13 17:08:36 +0200
commit3af0114a295d2a6c600117adb5bcd6689c0c787e (patch)
tree262f32143b99a8754e517be454681267cadaa85f /sal/qa
parent4edbfa892bfe6ca81c88363b2249e0b7d5eef31f (diff)
Introduce O[U]String::toUInt32
...which has become necessary since bd60d41176da540b01d7583cfe00637431967f39 "Handle oveflow in O(U)String::toInt() functions" reduces values in the range (SAL_MAX_INT32 .. SAL_MAX_UINT32] to zero, but some calls of toInt32(16) relied on getting a correct (unsigned) value for the whole input range ["0" .. "FFFFFFFF"] (see libreoffice-4-1 commit 9bf6c83367cedb7be81bf67f30d2147d26c7a8c3 "Revert overflow checks in O[U]String::toInt{32,64} again"). Audited all uses of toInt32/64 with non-decimal radix. (There is still a TODO comment in oox/source/helper/attributelist.cxx, and stoc/source/typeconv/convert.cxx will still need some love and test code.) Change-Id: Iadaca1c0e41dab553687d0ce41c20c10cd657a95
Diffstat (limited to 'sal/qa')
-rw-r--r--sal/qa/rtl/strings/test_strings_toint.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/sal/qa/rtl/strings/test_strings_toint.cxx b/sal/qa/rtl/strings/test_strings_toint.cxx
index 4a4f549e4495..cf5de4a3b2bf 100644
--- a/sal/qa/rtl/strings/test_strings_toint.cxx
+++ b/sal/qa/rtl/strings/test_strings_toint.cxx
@@ -22,6 +22,7 @@ template< typename T > class Test: public CppUnit::TestFixture {
private:
CPPUNIT_TEST_SUITE(Test);
CPPUNIT_TEST(testToInt32Overflow);
+ CPPUNIT_TEST(testToUInt32Overflow);
CPPUNIT_TEST(testToInt64Overflow);
CPPUNIT_TEST(testToUInt64Overflow);
CPPUNIT_TEST_SUITE_END();
@@ -35,6 +36,12 @@ private:
CPPUNIT_ASSERT_EQUAL(sal_Int32(0), T("2147483648").toInt32());
}
+ void testToUInt32Overflow() {
+ CPPUNIT_ASSERT_EQUAL(SAL_MAX_UINT32 - 1, T("4294967294").toUInt32());
+ CPPUNIT_ASSERT_EQUAL(SAL_MAX_UINT32, T("4294967295").toUInt32());
+ CPPUNIT_ASSERT_EQUAL(sal_uInt32(0), T("4294967296").toUInt32());
+ }
+
void testToInt64Overflow() {
CPPUNIT_ASSERT_EQUAL(sal_Int64(0), T("-9223372036854775809").toInt64());
CPPUNIT_ASSERT_EQUAL(