[SHELL32] Don't call CoInitialize in DllMain, bad things happen when calling into dll's that are being loaded! CORE-12443 #comment Please retest!

svn path=/trunk/; revision=73434
This commit is contained in:
Mark Jansen 2016-12-06 21:18:17 +00:00
parent cce01fa95c
commit 54e99fcd1b
3 changed files with 4 additions and 3 deletions

View file

@ -87,7 +87,7 @@ static HRESULT getIconLocationForFolder(IShellFolder * psf, LPCITEMIDLIST pidl,
return S_OK; return S_OK;
} }
void InitIconOverlays(void) static void InitIconOverlays(void)
{ {
HKEY hKey; HKEY hKey;
DWORD dwIndex, dwResult, dwSize; DWORD dwIndex, dwResult, dwSize;
@ -161,6 +161,8 @@ GetIconOverlay(LPCITEMIDLIST pidl, WCHAR * wTemp, int* pIndex)
if(!SHGetPathFromIDListW(pidl, szPath)) if(!SHGetPathFromIDListW(pidl, szPath))
return FALSE; return FALSE;
if (!Handlers)
InitIconOverlays();
HighestPriority = 101; HighestPriority = 101;
IconIndex = NumIconOverlayHandlers; IconIndex = NumIconOverlayHandlers;

View file

@ -307,9 +307,9 @@ STDAPI_(BOOL) DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID fImpLoad)
InitCtrls.dwICC = ICC_WIN95_CLASSES | ICC_DATE_CLASSES | ICC_USEREX_CLASSES; InitCtrls.dwICC = ICC_WIN95_CLASSES | ICC_DATE_CLASSES | ICC_USEREX_CLASSES;
InitCommonControlsEx(&InitCtrls); InitCommonControlsEx(&InitCtrls);
/* Bad idea, initialization in DllMain! */
SIC_Initialize(); SIC_Initialize();
InitChangeNotifications(); InitChangeNotifications();
InitIconOverlays();
} }
else if (dwReason == DLL_PROCESS_DETACH) else if (dwReason == DLL_PROCESS_DETACH)
{ {

View file

@ -109,7 +109,6 @@ HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
/* Change Notification */ /* Change Notification */
void InitChangeNotifications(void) DECLSPEC_HIDDEN; void InitChangeNotifications(void) DECLSPEC_HIDDEN;
void FreeChangeNotifications(void) DECLSPEC_HIDDEN; void FreeChangeNotifications(void) DECLSPEC_HIDDEN;
void InitIconOverlays(void);
/* file operation */ /* file operation */
#define ASK_DELETE_FILE 1 #define ASK_DELETE_FILE 1