On 2016-12-07 01:10, gadamopoulos@svn.reactos.org wrote:
[SHELL32] - Initialize the shell icon cache only when needed or when FileIconInit is called (and not in the DllMain of shell32)
--- trunk/reactos/dll/win32/shell32/iconcache.cpp [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shell32/iconcache.cpp [iso-8859-1] Wed Dec 7 00:10:43 2016 @@ -453,6 +453,9 @@ sice.dwSourceIndex = dwSourceIndex; sice.dwFlags = dwFlags;
if (!sic_hdpa)
SIC_Initialize();EnterCriticalSection(&SHELL32_SicCS);
if (NULL != DPA_GetPtr (sic_hdpa, 0))
@@ -687,6 +690,9 @@ RegCloseKey(hKeyShellIcons); }
- if (!sic_hdpa)
SIC_Initialize();- return SIC_LoadIcon(iconPath, iconIdx, 0);
}
This is great. Unfortunately now you have a race condition if multiple of these functions get called concurrently.