diff --git a/threads.c b/threads.c index 98fd2c2..7f421dd 100644 --- a/threads.c +++ b/threads.c @@ -911,8 +911,10 @@ xmlCleanupThreads(void) xmlGenericError(xmlGenericErrorContext, "xmlCleanupThreads()\n"); #endif #ifdef HAVE_PTHREAD_H - if ((libxml_is_threaded) && (pthread_key_delete != NULL)) + if ((libxml_is_threaded) && (pthread_key_delete != NULL)) { pthread_key_delete(globalkey); + once_control = PTHREAD_ONCE_INIT; + } #elif defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL)) if (globalkey != TLS_OUT_OF_INDEXES) { xmlGlobalStateCleanupHelperParams *p;