Alexandre Julliard : kernel32: LCMapString should include the terminating NULL also for LCMAP_SORTKEY.

Alexandre Julliard julliard at winehq.org
Mon Jan 19 08:58:51 CST 2009


Module: wine
Branch: master
Commit: 317ad64985095f59d3dc09ae7c9792c8c2bf03b6
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=317ad64985095f59d3dc09ae7c9792c8c2bf03b6

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Mon Jan 19 13:46:30 2009 +0100

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 deletions(-)

diff --git a/dlls/kernel32/locale.c b/dlls/kernel32/locale.c
index 1b994ec..03554c3 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 dfbbe04..57bfa01 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");
 




More information about the wine-cvs mailing list