From: Bernhard Kölbl bkoelbl@codeweavers.com
Signed-off-by: Bernhard Kölbl bkoelbl@codeweavers.com --- dlls/kernel32/tests/locale.c | 11 +++++++++++ tools/make_unicode | 4 ++++ 2 files changed, 15 insertions(+)
diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 825d6f95f62..e409cc825f4 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -2841,6 +2841,17 @@ static void test_lcmapstring_unicode(lcmapstring_wrapper func_ptr, const char *f ok(!ret, "%s func_ptr should fail with srclen = 0\n", func_name); ok(GetLastError() == ERROR_INVALID_PARAMETER, "%s unexpected error code %ld\n", func_name, GetLastError()); + + /* test for characters which don't get mapped to their + halfwidth counterparts on LCMAP_HALFWIDTH */ + buf[0] = buf2[0] = 0x2190; + buf[1] = buf2[1] = 0x2191; + buf[2] = buf2[2] = 0x2192; + buf[3] = buf2[3] = 0x2193; + buf[4] = buf2[4] = 0x25cb; + ret = func_ptr(LCMAP_HALFWIDTH, buf, 5, buf2, 5); + ok(ret == 5, "%s ret %d, expected value 5\n", func_name, ret); + ok(!memcmp(buf, buf2, sizeof(WCHAR) * 5), "in- and output must be equal\n"); }
static INT LCMapStringW_wrapper(DWORD flags, LPCWSTR src, INT srclen, LPWSTR dst, INT dstlen) diff --git a/tools/make_unicode b/tools/make_unicode index cacc062b230..f07d2f5dc66 100755 --- a/tools/make_unicode +++ b/tools/make_unicode @@ -5318,6 +5318,10 @@ sub build_charmaps_data() $halfwidth_table[0x2019] = 0x0027; $halfwidth_table[0x201c] = 0x0022; $halfwidth_table[0x201d] = 0x0022; + foreach my $ch (0x2190..0x2193, 0x25cb) + { + $halfwidth_table[$ch] = $ch; + } $halfwidth_table[0x309b] = 0xff9e; $halfwidth_table[0x309c] = 0xff9f; $fullwidth_table[0x309b] = 0x3099;