summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog7
-rw-r--r--parser.c4
-rw-r--r--threads.c3
3 files changed, 9 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index ed6fc5d1..601b000e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+Thu Jun 4 11:06:07 CEST 2009 Daniel Veillard <daniel@veillard.com>
+
+ * parser.c threads.c: change the threading initialization sequence
+ as suggested by Igor Novoseltsev to avoid crash if xmlInitParser()
+ is called from a thread which is not the main one, should fix
+ #584605
+
Fri May 15 17:54:48 CEST 2009 Daniel Veillard <daniel@veillard.com>
* HTMLparser.c: make sure we keep line numbers fixes #580705
diff --git a/parser.c b/parser.c
index 5b04cf58..dea5650b 100644
--- a/parser.c
+++ b/parser.c
@@ -13847,11 +13847,11 @@ xmlInitParser(void) {
__xmlGlobalInitMutexLock();
if (xmlParserInitialized == 0) {
#endif
+ xmlInitGlobals();
+ xmlInitThreads();
if ((xmlGenericError == xmlGenericErrorDefaultFunc) ||
(xmlGenericError == NULL))
initGenericErrorDefaultFunc(NULL);
- xmlInitGlobals();
- xmlInitThreads();
xmlInitMemory();
xmlInitCharEncodingHandlers();
xmlDefaultSAXHandlerInit();
diff --git a/threads.c b/threads.c
index 073fd142..25e27908 100644
--- a/threads.c
+++ b/threads.c
@@ -852,9 +852,6 @@ xmlUnlockLibrary(void)
void
xmlInitThreads(void)
{
-#ifdef DEBUG_THREADS
- xmlGenericError(xmlGenericErrorContext, "xmlInitThreads()\n");
-#endif
#if defined(HAVE_WIN32_THREADS) && !defined(HAVE_COMPILER_TLS) && (!defined(LIBXML_STATIC) || defined(LIBXML_STATIC_FOR_DLL))
InitializeCriticalSection(&cleanup_helpers_cs);
#endif