diff --git a/dlls/user32/resource.c b/dlls/user32/resource.c index d2937988765..b050e1eba8c 100644 --- a/dlls/user32/resource.c +++ b/dlls/user32/resource.c @@ -185,17 +185,10 @@ INT WINAPI DECLSPEC_HOTPATCH LoadStringW( HINSTANCE instance, UINT resource_id, } i = min(buflen - 1, *p); - if (i > 0) { - memcpy(buffer, p + 1, i * sizeof (WCHAR)); - buffer[i] = 0; - } else { - if (buflen > 1) { - buffer[0] = 0; - return 0; - } - } + memcpy(buffer, p + 1, i * sizeof(WCHAR)); + buffer[i] = 0; - TRACE("%s loaded !\n", debugstr_w(buffer)); + TRACE("returning %s\n", debugstr_w(buffer)); return i; } diff --git a/dlls/user32/tests/resource.c b/dlls/user32/tests/resource.c index da4efd2465f..de4bb2c8a53 100644 --- a/dlls/user32/tests/resource.c +++ b/dlls/user32/tests/resource.c @@ -147,6 +147,15 @@ static void test_LoadStringW(void) "got %lu.\n", GetLastError()); ok(!returnedstringw[0], "got %#x.\n", returnedstringw[0]); ok(returnedstringw[1] == 0xcccc, "got %#x.\n", returnedstringw[1]); + + /* Test short buffer */ + SetLastError(0xdeadbeef); + memset(returnedstringw, 0xcc, sizeof(returnedstringw)); + length1 = LoadStringW(hInst, 2, returnedstringw, 1); /* get resource string */ + ok(!length1, "got %d.\n", length1); + ok(GetLastError() == 0xdeadbeef, "got %lu.\n", GetLastError()); + ok(!returnedstringw[0], "got %#x.\n", returnedstringw[0]); + ok(returnedstringw[1] == 0xcccc, "got %#x.\n", returnedstringw[1]); } static void test_LoadStringA (void)