Jacek Caban : user32: Don't load cursor inside user lock in register_builtin.

Alexandre Julliard julliard at winehq.org
Fri Nov 19 15:45:33 CST 2021


Module: wine
Branch: master
Commit: 898ce074066ea29dc8eedd37070161ede912dc25
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=898ce074066ea29dc8eedd37070161ede912dc25

Author: Jacek Caban <jacek at codeweavers.com>
Date:   Fri Nov 19 13:45:10 2021 +0100

user32: Don't load cursor inside user lock in register_builtin.

Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/user32/class.c | 11 +++++++++--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/dlls/user32/class.c b/dlls/user32/class.c
index 622226f9e15..b37db675400 100644
--- a/dlls/user32/class.c
+++ b/dlls/user32/class.c
@@ -529,11 +529,18 @@ static CLASS *CLASS_RegisterClass( LPCWSTR name, UINT basename_offset, HINSTANCE
 static void register_builtin( const struct builtin_class_descr *descr )
 {
     CLASS *classPtr;
+    HCURSOR cursor = 0;
+
+    if (descr->cursor) cursor = LoadCursorA( 0, (LPSTR)descr->cursor );
 
     if (!(classPtr = CLASS_RegisterClass( descr->name, 0, user32_module, FALSE,
-                                          descr->style, 0, descr->extra ))) return;
+                                          descr->style, 0, descr->extra )))
+    {
+        if (cursor) DestroyCursor( cursor );
+        return;
+    }
 
-    if (descr->cursor) classPtr->hCursor = LoadCursorA( 0, (LPSTR)descr->cursor );
+    classPtr->hCursor       = cursor;
     classPtr->hbrBackground = descr->brush;
     classPtr->winproc       = BUILTIN_WINPROC( descr->proc );
     release_class_ptr( classPtr );




More information about the wine-cvs mailing list