[SHELL32] Don't call CoInitialize in DllMain, bad things happen when calling into...
authorMark Jansen <mark.jansen@reactos.org>
Tue, 6 Dec 2016 21:18:17 +0000 (21:18 +0000)
committerMark Jansen <mark.jansen@reactos.org>
Tue, 6 Dec 2016 21:18:17 +0000 (21:18 +0000)
svn path=/trunk/; revision=73434

reactos/dll/win32/shell32/folders.cpp
reactos/dll/win32/shell32/shell32.cpp
reactos/dll/win32/shell32/wine/shell32_main.h

index 9e5a987..975a825 100644 (file)
@@ -87,7 +87,7 @@ static HRESULT getIconLocationForFolder(IShellFolder * psf, LPCITEMIDLIST pidl,
     return S_OK;
 }
 
-void InitIconOverlays(void)
+static void InitIconOverlays(void)
 {
     HKEY hKey;
     DWORD dwIndex, dwResult, dwSize;
@@ -161,6 +161,8 @@ GetIconOverlay(LPCITEMIDLIST pidl, WCHAR * wTemp, int* pIndex)
     if(!SHGetPathFromIDListW(pidl, szPath))
         return FALSE;
 
+    if (!Handlers)
+        InitIconOverlays();
 
     HighestPriority = 101;
     IconIndex = NumIconOverlayHandlers;
index b1c590b..0b1e444 100644 (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;
         InitCommonControlsEx(&InitCtrls);
 
+        /* Bad idea, initialization in DllMain! */
         SIC_Initialize();
         InitChangeNotifications();
-        InitIconOverlays();
     }
     else if (dwReason == DLL_PROCESS_DETACH)
     {
index 127a566..66a9859 100644 (file)
@@ -109,7 +109,6 @@ HGLOBAL RenderFILENAMEW (LPITEMIDLIST pidlRoot, LPITEMIDLIST * apidl, UINT cidl)
 /* Change Notification */
 void InitChangeNotifications(void) DECLSPEC_HIDDEN;
 void FreeChangeNotifications(void) DECLSPEC_HIDDEN;
-void InitIconOverlays(void);
 
 /* file operation */
 #define ASK_DELETE_FILE           1