[PATCH] user32: Avoid touching last error on successful path of GetClassInfo()
Nikolay Sivov
nsivov at codeweavers.com
Mon May 7 05:20:45 CDT 2018
Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
Should help with https://bugs.winehq.org/show_bug.cgi?id=44563
dlls/user32/class.c | 5 ++++-
dlls/user32/tests/class.c | 1 +
2 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/dlls/user32/class.c b/dlls/user32/class.c
index d4e7951d39..ce2830fe25 100644
--- a/dlls/user32/class.c
+++ b/dlls/user32/class.c
@@ -333,6 +333,7 @@ const WCHAR *CLASS_GetVersionedName( const WCHAR *name, UINT *basename_offset, B
ULONG module_offset;
} *wndclass;
const WCHAR *module, *ret;
+ UNICODE_STRING name_us;
HMODULE hmod;
if (basename_offset)
@@ -345,7 +346,9 @@ const WCHAR *CLASS_GetVersionedName( const WCHAR *name, UINT *basename_offset, B
return name;
data.cbSize = sizeof(data);
- if (!FindActCtxSectionStringW(0, NULL, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION, name, &data))
+ RtlInitUnicodeString(&name_us, name);
+ if (RtlFindActivationContextSectionString(0, NULL, ACTIVATION_CONTEXT_SECTION_WINDOW_CLASS_REDIRECTION,
+ &name_us, &data))
return name;
wndclass = (struct wndclass_redirect_data *)data.lpData;
diff --git a/dlls/user32/tests/class.c b/dlls/user32/tests/class.c
index a9eee4109c..92b9ad93a2 100644
--- a/dlls/user32/tests/class.c
+++ b/dlls/user32/tests/class.c
@@ -998,6 +998,7 @@ if (0) { /* crashes under XP */
SetLastError(0xdeadbeef);
ret = GetClassInfoExA(0, "static", &wcx);
ok(ret, "GetClassInfoExA() error %d\n", GetLastError());
+ ok(GetLastError() == 0xdeadbeef, "Unexpected error code %d\n", GetLastError());
ok(wcx.cbSize == 0, "expected 0, got %u\n", wcx.cbSize);
ok(wcx.lpfnWndProc != NULL, "got null proc\n");
--
2.17.0
More information about the wine-devel
mailing list