Piotr Caban : user32: Fix LoadStringA behavior on 1-character long buffer.
Module: wine Branch: master Commit: c2df317c4b7be489d63fd559d7fb6676578a0bb3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2df317c4b7be489d63fd559d7... Author: Piotr Caban <piotr(a)codeweavers.com> Date: Wed May 14 16:06:27 2014 +0200 user32: Fix LoadStringA behavior on 1-character long buffer. --- dlls/user32/resource.c | 3 ++- dlls/user32/tests/resource.c | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/dlls/user32/resource.c b/dlls/user32/resource.c index 1917d51..83442d8 100644 --- a/dlls/user32/resource.c +++ b/dlls/user32/resource.c @@ -310,7 +310,8 @@ INT WINAPI LoadStringA( HINSTANCE instance, UINT resource_id, LPSTR buffer, INT while (id--) p += *p + 1; - RtlUnicodeToMultiByteN( buffer, buflen - 1, &retval, p + 1, *p * sizeof(WCHAR) ); + if (buflen != 1) + RtlUnicodeToMultiByteN( buffer, buflen - 1, &retval, p + 1, *p * sizeof(WCHAR) ); } buffer[retval] = 0; TRACE("returning %s\n", debugstr_a(buffer)); diff --git a/dlls/user32/tests/resource.c b/dlls/user32/tests/resource.c index 9cb7380..2388adb 100644 --- a/dlls/user32/tests/resource.c +++ b/dlls/user32/tests/resource.c @@ -126,6 +126,13 @@ static void test_LoadStringA (void) ok( ret == -1 || broken(ret == 0), "LoadStringA did not return -1 when called with buflen = 0, got %d, err %d\n", ret, GetLastError()); + + SetLastError(0xdeadbeef); + buf[0] = 'a'; + ret = LoadStringA(hInst, 1, buf, 1); + ok( !ret, "LoadString returned %d\n", ret); + ok( buf[0] == 0, "buf[0] = %c (%x)\n", buf[0], buf[0]); + ok( GetLastError() == 0xdeadbeef, "GetLastError() = %d\n", GetLastError()); } static void test_accel1(void)
participants (1)
-
Alexandre Julliard