summaryrefslogtreecommitdiff
path: root/threads.c
diff options
context:
space:
mode:
authorAron Xu <aron@debian.org>2014-07-09 04:01:07 +0800
committerAron Xu <aron@debian.org>2014-07-09 04:01:07 +0800
commit7042e17490515a990a45aa7237d11bc49ab0eaf0 (patch)
tree62b661911406394bbeaca8951d660bb6d8aac0de /threads.c
parent2c8fe012ef1ff6e0613480dd182dec099aa9636e (diff)
downloadlibxml2-7042e17490515a990a45aa7237d11bc49ab0eaf0.tar.gz
Imported Upstream version 2.8.0+dfsg1
Diffstat (limited to 'threads.c')
-rw-r--r--threads.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/threads.c b/threads.c
index f2f2703..1eeac0e 100644
--- a/threads.c
+++ b/threads.c
@@ -146,7 +146,6 @@ struct _xmlRMutex {
static pthread_key_t globalkey;
static pthread_t mainthread;
static pthread_once_t once_control = PTHREAD_ONCE_INIT;
-static pthread_once_t once_control_init = PTHREAD_ONCE_INIT;
static pthread_mutex_t global_init_lock = PTHREAD_MUTEX_INITIALIZER;
#elif defined HAVE_WIN32_THREADS
#if defined(HAVE_COMPILER_TLS)
@@ -252,6 +251,7 @@ xmlMutexLock(xmlMutexPtr tok)
#ifdef DEBUG_THREADS
xmlGenericError(xmlGenericErrorContext,
"xmlMutexLock():BeOS:Couldn't aquire semaphore\n");
+ exit();
#endif
}
tok->tid = find_thread(NULL);
@@ -439,7 +439,7 @@ __xmlGlobalInitMutexLock(void)
/* Make sure the global init lock is initialized and then lock it. */
#ifdef HAVE_PTHREAD_H
/* The mutex is statically initialized, so we just lock it. */
- if (pthread_mutex_lock != NULL)
+ if (pthread_mutex_lock)
pthread_mutex_lock(&global_init_lock);
#elif defined HAVE_WIN32_THREADS
LPCRITICAL_SECTION cs;
@@ -499,6 +499,7 @@ __xmlGlobalInitMutexLock(void)
#ifdef DEBUG_THREADS
xmlGenericError(xmlGenericErrorContext,
"xmlGlobalInitMutexLock():BeOS:Couldn't acquire semaphore\n");
+ exit();
#endif
}
#endif
@@ -508,7 +509,7 @@ void
__xmlGlobalInitMutexUnlock(void)
{
#ifdef HAVE_PTHREAD_H
- if (pthread_mutex_unlock != NULL)
+ if (pthread_mutex_unlock)
pthread_mutex_unlock(&global_init_lock);
#elif defined HAVE_WIN32_THREADS
if (global_init_lock != NULL) {
@@ -914,7 +915,6 @@ xmlCleanupThreads(void)
#ifdef HAVE_PTHREAD_H
if ((libxml_is_threaded) && (pthread_key_delete != NULL))
pthread_key_delete(globalkey);
- once_control = once_control_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;
@@ -954,7 +954,6 @@ xmlOnceInit(void)
#ifdef HAVE_PTHREAD_H
(void) pthread_key_create(&globalkey, xmlFreeGlobalState);
mainthread = pthread_self();
- __xmlInitializeDict();
#elif defined(HAVE_WIN32_THREADS)
if (!run_once.done) {
if (InterlockedIncrement(&run_once.control) == 1) {
@@ -962,7 +961,6 @@ xmlOnceInit(void)
globalkey = TlsAlloc();
#endif
mainthread = GetCurrentThreadId();
- __xmlInitializeDict();
run_once.done = 1;
} else {
/* Another thread is working; give up our slice and
@@ -976,7 +974,6 @@ xmlOnceInit(void)
globalkey = tls_allocate();
tls_set(globalkey, NULL);
mainthread = find_thread(NULL);
- __xmlInitializeDict();
} else
atomic_add(&run_once_init, -1);
#endif