tools/source/generic/bigint.cxx | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-)
New commits: commit bac6e18d687266d9b9025ac9b80e6503b89a9d51 Author: David Tardon <[email protected]> Date: Fri Oct 17 21:42:35 2014 +0200 fix long long -> BigInt for LONG_MAX value Change-Id: I1cf551299bae925b5a5cf0a488b6cc3497d010bf diff --git a/tools/source/generic/bigint.cxx b/tools/source/generic/bigint.cxx index 43c0f68..a6acdc8 100644 --- a/tools/source/generic/bigint.cxx +++ b/tools/source/generic/bigint.cxx @@ -586,10 +586,15 @@ BigInt::BigInt( long long nValue ) bIsNeg = nValue < 0; nLen = 0; - unsigned long long nUValue = static_cast<unsigned long long>(bIsNeg ? -nValue : nValue); - if (nUValue >= std::numeric_limits<long>::max()) + if ((nValue >= std::numeric_limits<long>::min()) && (nValue <= std::numeric_limits<long>::max())) + { + bIsBig = false; + nVal = static_cast<long>(nValue); + } + else { bIsBig = true; + const unsigned long long nUValue = static_cast<unsigned long long>(bIsNeg ? -nValue : nValue); for (int i = 0; (i != sizeof(unsigned long long) / 2) && (nUValue != 0); ++i) { nNum[i] = static_cast<sal_uInt16>(nUValue & 0xffffUL); @@ -597,11 +602,6 @@ BigInt::BigInt( long long nValue ) ++nLen; } } - else - { - bIsBig = false; - nVal = static_cast<long>(nValue); - } } #endif _______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
