Module: wine Branch: master Commit: 3dc8b28d841a8f676b158bccbfe33ef1200e6e96 URL: http://source.winehq.org/git/wine.git/?a=commit;h=3dc8b28d841a8f676b158bccbf...
Author: Viliam Lejcik lejcik@host.sk Date: Mon Nov 9 10:41:54 2009 +0100
kernel32: Fix GetCurrencyFormat grouping.
---
dlls/kernel32/lcformat.c | 2 +- dlls/kernel32/tests/locale.c | 24 ++++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletions(-)
diff --git a/dlls/kernel32/lcformat.c b/dlls/kernel32/lcformat.c index 1b1dfcc..f1b5ba5 100644 --- a/dlls/kernel32/lcformat.c +++ b/dlls/kernel32/lcformat.c @@ -1521,7 +1521,7 @@ GetCurrencyFormatW_Error:
dwState |= NF_DIGITS_OUT; dwCurrentGroupCount++; - if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount) + if (szSrc >= lpszValue && dwCurrentGroupCount == dwGroupCount && *szSrc != '-') { LPWSTR lpszGrp = lpFormat->lpThousandSep + strlenW(lpFormat->lpThousandSep) - 1;
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 77fae8b..37dc0aa 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -743,6 +743,18 @@ static void test_GetCurrencyFormatA(void) ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); EXPECT_LENA; EXPECT_EQA;
+ STRINGSA("235","$235.0"); /* Grouping of a positive number */ + format.Grouping = 3; + ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer)); + ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); + EXPECT_LENA; EXPECT_EQA; + + STRINGSA("-235","$-235.0"); /* Grouping of a negative number */ + format.NegativeOrder = 2; + ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer)); + ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); + EXPECT_LENA; EXPECT_EQA; + format.LeadingZero = 1; /* Always provide leading zero */ STRINGSA(".5","$0.5"); ret = GetCurrencyFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer)); @@ -990,6 +1002,18 @@ static void test_GetNumberFormatA(void) ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); EXPECT_LENA; EXPECT_EQA;
+ STRINGSA("235","235.0"); /* Grouping of a positive number */ + format.Grouping = 3; + ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer)); + ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); + EXPECT_LENA; EXPECT_EQA; + + STRINGSA("-235","-235.0"); /* Grouping of a negative number */ + format.NegativeOrder = NEG_LEFT; + ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer)); + ok(ret, "Expected ret != 0, got %d, error %d\n", ret, GetLastError()); + EXPECT_LENA; EXPECT_EQA; + format.LeadingZero = 1; /* Always provide leading zero */ STRINGSA(".5","0.5"); ret = GetNumberFormatA(lcid, 0, input, &format, buffer, COUNTOF(buffer));