--- libxml2-2.9.0-orig/threads.c 2012-09-11 03:52:46.000000000 +0000 +++ libxml2-2.9.0/threads.c 2013-02-12 20:44:23.000000000 +0000 @@ -146,6 +146,7 @@ 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) @@ -915,7 +916,7 @@ #ifdef HAVE_PTHREAD_H if ((libxml_is_threaded) && (pthread_key_delete != NULL)) pthread_key_delete(globalkey); - once_control = PTHREAD_ONCE_INIT; + 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; --- libxml2-2.9.0-orig/configure.in 2012-09-11 03:52:46.053739520 +0000 +++ libxml2-2.9.0/configure.in 2013-02-12 20:37:19.000000000 +0000 @@ -988,6 +988,11 @@ *beos*) WITH_THREADS="1" THREAD_CFLAGS="$THREAD_CFLAGS -DHAVE_BEOS_THREADS" ;; + *haiku*) WITH_THREADS="1" + THREAD_LIB="" + AC_DEFINE([HAVE_PTHREAD_H], [], [Define if is there]) + ;; + *linux*) if test "${GCC}" = "yes" ; then GCC_VERSION=`${CC} --version | head -1 | awk '{print $3}'`