diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index 3bfd339a51dc1ed1a1022523eac1c809621bea7d..5377e9c36b5ed7e5fb307c9fff0932ef31029c5f 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -1137,7 +1137,7 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
 	  case DLL_PROCESS_DETACH:
 	    shell32_RefCount--;
 	    if ( !shell32_RefCount )
-	    { FreeLibrary(hComctl32);
+	    { 
 	      bShell32IsInitialized = FALSE;
 
 	      if (pdesktopfolder) 
@@ -1145,6 +1145,7 @@ BOOL WINAPI Shell32LibMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
 	      }
 
 	      SIC_Destroy();
+              FreeLibrary(hComctl32);
 
 	      /* this one is here to check if AddRef/Release is balanced */
 	      if (shell32_ObjCount)