From 1d4037aa1f081ee2273468aa6f6cc5918d5e7d14 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Sun, 27 Feb 2005 23:08:13 +0000 Subject: [PATCH] fixed ToString() for negative long longs (bug 1101426) git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@32433 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- src/common/longlong.cpp | 5 ++++- tests/longlong/longlongtest.cpp | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/common/longlong.cpp b/src/common/longlong.cpp index 62afbf79a4..aa40465563 100644 --- a/src/common/longlong.cpp +++ b/src/common/longlong.cpp @@ -1105,7 +1105,10 @@ void *wxULongLongWx::asArray(void) const \ while ( ll != 0 ) \ { \ - result.Prepend((wxChar)(_T('0') + (ll % 10).ToLong())); \ + long digit = (ll % 10).ToLong(); \ + if ( neg ) \ + digit = -digit; \ + result.Prepend((wxChar)(_T('0') + digit)); \ ll /= 10; \ } \ \ diff --git a/tests/longlong/longlongtest.cpp b/tests/longlong/longlongtest.cpp index 5b7920bf87..043a259cef 100644 --- a/tests/longlong/longlongtest.cpp +++ b/tests/longlong/longlongtest.cpp @@ -303,6 +303,9 @@ void LongLongTestCase::ToString() a.Negate(); CPPUNIT_ASSERT( a.ToString() == _T("-1311768467139281697") ); + wxLongLong llMin(LONG_MIN, 0); + CPPUNIT_ASSERT( a.ToString() == _T("-9223372036854775808") ); + #if wxUSE_LONGLONG_WX wxLongLongWx a1(a.GetHi(), a.GetLo()); CPPUNIT_ASSERT( a1.ToString() == _T("-1311768467139281697") ); -- 2.47.2