On 2016-12-07 01:10, gadamopoulos(a)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.