diff --git a/threads.c b/threads.c
index 6aa5ecc..a1263fc 100644
--- a/threads.c
+++ b/threads.c
@@ -92,7 +92,7 @@
 static __declspec(thread) xmlGlobalState tlstate;
 static __declspec(thread) int tlstate_inited = 0;
 #else /* HAVE_COMPILER_TLS */
-static DWORD globalkey;
+static DWORD globalkey = TLS_OUT_OF_INDEXES;
 #endif /* HAVE_COMPILER_TLS */
 static DWORD mainthread;
 static int run_once_init = 1;
@@ -323,7 +323,7 @@
 
 
 #ifdef HAVE_WIN32_THREADS
-#if !defined(HAVE_COMPILER_TLS)
+#if !defined(HAVE_COMPILER_TLS) && defined(LIBXML_STATIC)
 typedef struct _xmlGlobalStateCleanupHelperParams
 {
     HANDLE thread;
@@ -339,7 +339,7 @@
     free(params);
     _endthread();
 }
-#endif /* HAVE_COMPILER_TLS */
+#endif /* HAVE_COMPILER_TLS && LIBXML_STATIC */
 #endif /* HAVE_WIN32_THREADS */
 
 /**
@@ -381,13 +381,17 @@
     }
     if ((globalval = (xmlGlobalState *) TlsGetValue(globalkey)) == NULL) {
 	xmlGlobalState *tsd = xmlNewGlobalState();
+#if defined(LIBXML_STATIC)
 	xmlGlobalStateCleanupHelperParams *p = 
 	    (xmlGlobalStateCleanupHelperParams *) malloc(sizeof(xmlGlobalStateCleanupHelperParams));
 	p->memory = tsd;
 	DuplicateHandle(GetCurrentProcess(), GetCurrentThread(), 
 		GetCurrentProcess(), &p->thread, 0, TRUE, DUPLICATE_SAME_ACCESS);
+#endif
 	TlsSetValue(globalkey, tsd);
+#if defined(LIBXML_STATIC)
 	_beginthread(xmlGlobalStateCleanupHelper, 0, p);
+#endif
 
 	return (tsd);
     }
@@ -535,3 +539,34 @@
     mainthread = GetCurrentThreadId();
 #endif
 }
+
+/**
+ * DllMain
+ *
+ * Entry point for Windows library. It is being used to free thread-specific
+ * storage.
+ */
+#if defined(HAVE_WIN32_THREADS) && !defined(LIBXML_STATIC)
+BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) 
+{
+    switch(fdwReason) {
+    case DLL_THREAD_DETACH:
+	if (globalkey != TLS_OUT_OF_INDEXES) {
+	    xmlGlobalState *globalval = (xmlGlobalState *)TlsGetValue(globalkey);
+	    if (globalval) {
+		xmlFreeGlobalState(globalval);
+		TlsSetValue(globalkey, NULL);
+	    }
+	}
+	break;
+    case DLL_PROCESS_DETACH:
+	if (globalkey != TLS_OUT_OF_INDEXES) {
+	    TlsFree(globalkey);
+	    globalkey = TLS_OUT_OF_INDEXES;
+	}
+	break;
+    }
+    return TRUE;
+}
+#endif
+
