Module: wine Branch: master Commit: d402df31966d73f7f120b4a4d90f22bcffd79b26 URL: https://source.winehq.org/git/wine.git/?a=commit;h=d402df31966d73f7f120b4a4d...
Author: Jacek Caban jacek@codeweavers.com Date: Tue Mar 15 14:26:39 2022 +0100
win32u: Fix name comparison in find_class.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52654 Signed-off-by: Jacek Caban jacek@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/user32/tests/class.c | 5 +++++ dlls/win32u/class.c | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c index 64fc3c014e3..eed90b8adc9 100644 --- a/dlls/user32/tests/class.c +++ b/dlls/user32/tests/class.c @@ -1049,6 +1049,11 @@ if (0) { /* crashes under XP */ ok(ret, "GetClassInfoExA() error %ld\n", GetLastError()); ok(wcx.cbSize == sizeof(wcx) + 1, "expected sizeof(wcx)+1, got %u\n", wcx.cbSize); ok(wcx.lpfnWndProc != NULL, "got null proc\n"); + + wcx.cbSize = sizeof(wcx); + ret = GetClassInfoExA(0, "stati", &wcx); + ok(!ret && GetLastError() == ERROR_CLASS_DOES_NOT_EXIST, + "GetClassInfoExA() returned %x %ld\n", ret, GetLastError()); }
static void test_icons(void) diff --git a/dlls/win32u/class.c b/dlls/win32u/class.c index 74d06ee04de..3113ef357cf 100644 --- a/dlls/win32u/class.c +++ b/dlls/win32u/class.c @@ -259,7 +259,8 @@ static CLASS *find_class( HINSTANCE module, UNICODE_STRING *name ) } else { - if (wcsnicmp( class->name, name->Buffer, name->Length / sizeof(WCHAR) )) continue; + if (wcsnicmp( class->name, name->Buffer, name->Length / sizeof(WCHAR) ) || + class->name[name->Length / sizeof(WCHAR)]) continue; } if (!class->local || !module || (class->instance & ~0xffff) == instance) {