Module: wine Branch: master Commit: c2df317c4b7be489d63fd559d7fb6676578a0bb3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=c2df317c4b7be489d63fd559d7...
Author: Piotr Caban piotr@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)