Akihiro Sagawa : kernel32: Fix LCMapString buffer calculation with LCMAP_KATAKANA and LCMAP_HALFWIDTH.
Alexandre Julliard
julliard at winehq.org
Mon Oct 15 16:15:29 CDT 2018
Module: wine
Branch: master
Commit: b02cdd36150d7afc6cac52725e3b659db0ec68f8
URL: https://source.winehq.org/git/wine.git/?a=commit;h=b02cdd36150d7afc6cac52725e3b659db0ec68f8
Author: Akihiro Sagawa <sagawa.aki at gmail.com>
Date: Tue Oct 16 00:31:23 2018 +0900
kernel32: Fix LCMapString buffer calculation with LCMAP_KATAKANA and LCMAP_HALFWIDTH.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=45982
Signed-off-by: Akihiro Sagawa <sagawa.aki at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/kernel32/locale.c | 10 +++++++++-
dlls/kernel32/tests/locale.c | 1 -
2 files changed, 9 insertions(+), 2 deletions(-)
diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index 0f37027..4d1eac6 100644
--- a/dlls/kernel32/locale.c
+++ b/dlls/kernel32/locale.c
@@ -3557,8 +3557,16 @@ INT WINAPI LCMapStringEx(LPCWSTR name, DWORD flags, LPCWSTR src, INT srclen, LPW
else if (flags & LCMAP_HALFWIDTH)
{
for (len = 0; srclen; src++, srclen--, len++)
- if (decompose_katakana(*src, NULL, 0) == 2)
+ {
+ WCHAR wch = *src;
+ /* map Hiragana to Katakana before decomposition if needed */
+ if ((flags & LCMAP_KATAKANA) &&
+ ((wch >= 0x3041 && wch <= 0x3096) || wch == 0x309D || wch == 0x309E))
+ wch += 0x60;
+
+ if (decompose_katakana(wch, NULL, 0) == 2)
len++;
+ }
}
else
len = srclen;
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c
index b8ced50..d3eb2ec 100644
--- a/dlls/kernel32/tests/locale.c
+++ b/dlls/kernel32/tests/locale.c
@@ -2537,7 +2537,6 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f
ok(!lstrcmpW(buf, halfwidth_text2), "%s string compare mismatch\n", func_name);
ret2 = func_ptr(LCMAP_HALFWIDTH | LCMAP_KATAKANA, japanese_text, -1, NULL, 0);
- todo_wine
ok(ret == ret2, "%s ret %d, expected value %d\n", func_name, ret, ret2);
/* test buffer overflow */
More information about the wine-cvs
mailing list