From 317ad64985095f59d3dc09ae7c9792c8c2bf03b6 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Mon, 19 Jan 2009 13:46:30 +0100 Subject: [PATCH] kernel32: LCMapString should include the terminating NULL also for LCMAP_SORTKEY. --- dlls/kernel32/locale.c | 4 ++++ dlls/kernel32/tests/locale.c | 4 +++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c index 1b994ec9d53..03554c3a6e7 100644 --- a/dlls/kernel32/locale.c +++ b/dlls/kernel32/locale.c @@ -2371,6 +2371,8 @@ INT WINAPI LCMapStringW(LCID lcid, DWORD flags, LPCWSTR src, INT srclen, ret = wine_get_sortkey(flags, src, srclen, (char *)dst, dstlen); if (ret == 0) SetLastError(ERROR_INSUFFICIENT_BUFFER); + else + ret++; return ret; } @@ -2510,6 +2512,8 @@ INT WINAPI LCMapStringA(LCID lcid, DWORD flags, LPCSTR src, INT srclen, ret = wine_get_sortkey(flags, srcW, srclenW, dst, dstlen); if (ret == 0) SetLastError(ERROR_INSUFFICIENT_BUFFER); + else + ret++; goto map_string_exit; } diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index dfbbe04d6c0..57bfa013d63 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -1227,9 +1227,11 @@ static void test_LCMapStringA(void) ret = LCMapStringA(LOCALE_USER_DEFAULT, LCMAP_SORTKEY, upper_case, -1, buf, sizeof(buf)); ok(ret, "LCMapStringA must succeed\n"); + ok(buf[ret-1] == 0, "LCMapStringA not null-terminated\n"); ret2 = LCMapStringA(LOCALE_USER_DEFAULT, LCMAP_SORTKEY, upper_case, lstrlenA(upper_case), buf2, sizeof(buf2)); - ok(ret, "LCMapStringA must succeed\n"); + ok(ret2, "LCMapStringA must succeed\n"); + ok(buf2[ret2-1] == 0, "LCMapStringA not null-terminated\n" ); ok(ret == ret2, "lengths of sort keys must be equal\n"); ok(!lstrcmpA(buf, buf2), "sort keys must be equal\n");