Module: wine Branch: master Commit: 2c63cf58eaeec9495c8aa174d62fe1c31aad3e74 URL: http://source.winehq.org/git/wine.git/?a=commit;h=2c63cf58eaeec9495c8aa174d6...
Author: Alexandre Julliard julliard@winehq.org Date: Tue Dec 14 13:49:14 2010 +0100
user32: Don't call GetModuleFileNameW under the user lock.
---
dlls/user32/cursoricon.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/dlls/user32/cursoricon.c b/dlls/user32/cursoricon.c index eeaae7a..356dbd8 100644 --- a/dlls/user32/cursoricon.c +++ b/dlls/user32/cursoricon.c @@ -1682,6 +1682,7 @@ BOOL WINAPI GetIconInfoExA( HICON icon, ICONINFOEXA *info ) BOOL WINAPI GetIconInfoExW( HICON icon, ICONINFOEXW *info ) { struct cursoricon_object *ptr; + HMODULE module; BOOL ret = TRUE;
if (info->cbSize != sizeof(*info)) @@ -1707,7 +1708,6 @@ BOOL WINAPI GetIconInfoExW( HICON icon, ICONINFOEXW *info ) info->szResName[0] = 0; if (ptr->module) { - GetModuleFileNameW( ptr->module, info->szModName, MAX_PATH ); if (IS_INTRESOURCE( ptr->resname )) info->wResID = LOWORD( ptr->resname ); else lstrcpynW( info->szResName, ptr->resname, MAX_PATH ); } @@ -1717,7 +1717,9 @@ BOOL WINAPI GetIconInfoExW( HICON icon, ICONINFOEXW *info ) DeleteObject( info->hbmColor ); ret = FALSE; } + module = ptr->module; release_icon_ptr( icon, ptr ); + if (ret && module) GetModuleFileNameW( module, info->szModName, MAX_PATH ); return ret; }