diff -ur libxml2-2.7.8.orig/globals.c libxml2-2.7.8/globals.c --- libxml2-2.7.8.orig/globals.c 2010-10-12 08:25:32.000000000 +0200 +++ libxml2-2.7.8/globals.c 2012-02-06 14:30:30.023997685 +0100 @@ -913,12 +913,23 @@ } #undef xmlIndentTreeOutput -int * +int __xmlIndentTreeOutput(void) { if (IS_MAIN_THREAD) - return (&xmlIndentTreeOutput); + return xmlIndentTreeOutput; else - return (&xmlGetGlobalState()->xmlIndentTreeOutput); + { + int ret; + xmlGlobalState *gs; + + gs = xmlGetGlobalState(); + ret = gs->xmlIndentTreeOutput; + + if (gs) + free (gs); + + return ret; + } } int xmlThrDefIndentTreeOutput(int v) { int ret; diff -ur libxml2-2.7.8.orig/include/libxml/globals.h libxml2-2.7.8/include/libxml/globals.h --- libxml2-2.7.8.orig/include/libxml/globals.h 2010-10-12 08:25:32.000000000 +0200 +++ libxml2-2.7.8/include/libxml/globals.h 2012-02-06 14:19:59.244017419 +0100 @@ -374,10 +374,10 @@ #endif XMLPUBFUN int XMLCALL xmlThrDefGetWarningsDefaultValue(int v); -XMLPUBFUN int * XMLCALL __xmlIndentTreeOutput(void); +XMLPUBFUN int XMLCALL __xmlIndentTreeOutput(void); #ifdef LIBXML_THREAD_ENABLED #define xmlIndentTreeOutput \ -(*(__xmlIndentTreeOutput())) +((__xmlIndentTreeOutput())) #else XMLPUBVAR int xmlIndentTreeOutput; #endif diff -ur libxml2-2.7.8.orig/parserInternals.c libxml2-2.7.8/parserInternals.c --- libxml2-2.7.8.orig/parserInternals.c 2010-10-12 08:25:32.000000000 +0200 +++ libxml2-2.7.8/parserInternals.c 2012-02-06 14:32:18.827994269 +0100 @@ -2154,7 +2154,6 @@ int old = xmlKeepBlanksDefaultValue; xmlKeepBlanksDefaultValue = val; - if (!val) xmlIndentTreeOutput = 1; return(old); }