Module: wine Branch: master Commit: 898ce074066ea29dc8eedd37070161ede912dc25 URL: https://source.winehq.org/git/wine.git/?a=commit;h=898ce074066ea29dc8eedd370... Author: Jacek Caban <jacek(a)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(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)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 );