liblangtag/liblangtag-0.2-xmlCleanupParser.patch |   20 ++++++++++++++++++++
 liblangtag/makefile.mk                           |    9 +++++++++
 2 files changed, 29 insertions(+)

New commits:
commit 5e6c595e9d698caf23ae68d38b9cab30ff9c9b94
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Thu Sep 20 15:40:30 2012 +0200

    Do not call xmlCleanupParser from liblangtag
    
    Despite its name, it is a cleanup function for libxml2 that must only be 
called
    when the process as a whole no longer needs libxml2.  Calling it from a 
library
    like liblangtag is not appropriate (just like liblangtag does not call
    xmlInitParser, either).
    
    In LibreOffice, this caused confusion about pthread keys for thread-local
    storage (xmlCleanupParser calls pthread_key_delete, but apparently if 
libxml2 is
    later used by unrelated code in LibreOffice again, it still uses the stale 
key,
    and if that key is now reused via an unrelated pthread_key_create, arbitrary
    crashes happen during thread termination in pthread's 
__nptl_deallocate_tsd).
    
    Change-Id: I82cef8bc400d48f19eaa94f26d50d4b8589da106

diff --git a/liblangtag/liblangtag-0.2-xmlCleanupParser.patch 
b/liblangtag/liblangtag-0.2-xmlCleanupParser.patch
new file mode 100644
index 0000000..3617125
--- /dev/null
+++ b/liblangtag/liblangtag-0.2-xmlCleanupParser.patch
@@ -0,0 +1,20 @@
+--- misc/liblangtag-0.2/liblangtag/lt-xml.c
++++ misc/build/liblangtag-0.2/liblangtag/lt-xml.c
+@@ -101,8 +101,6 @@ lt_xml_read_subtag_registry(lt_xml_t  *x
+       if (xmlparser)
+               xmlFreeParserCtxt(xmlparser);
+ 
+-      xmlCleanupParser();
+-
+       if (err) {
+               if (error)
+                       *error = g_error_copy(err);
+@@ -158,8 +156,6 @@ lt_xml_read_cldr_bcp47(lt_xml_t     *xml
+       if (xmlparser)
+               xmlFreeParserCtxt(xmlparser);
+ 
+-      xmlCleanupParser();
+-
+       if (err) {
+               if (error)
+                       *error = g_error_copy(err);
diff --git a/liblangtag/makefile.mk b/liblangtag/makefile.mk
index 39ca099..5c73c74 100644
--- a/liblangtag/makefile.mk
+++ b/liblangtag/makefile.mk
@@ -42,6 +42,7 @@ PATCH_FILES+=liblangtag-0.2-configure.patch
 PATCH_FILES+=liblangtag-0.2-datadir.patch
 PATCH_FILES+=liblangtag-0.2-msvc-warning.patch
 PATCH_FILES+=liblangtag-0.2-reg2xml-encoding-problem.patch
+PATCH_FILES+=liblangtag-0.2-xmlCleanupParser.patch
 
 CONFIGURE_DIR=.
 BUILD_DIR=$(CONFIGURE_DIR)
commit 179a6db61ee30cf776747802f06edeef45fec461
Author: Stephan Bergmann <sberg...@redhat.com>
Date:   Thu Sep 20 15:00:50 2012 +0200

    Add RPATH to liblangtag
    
    ...so that it consistenly uses the LO versions of libxml2/glibc libs at 
runtime.
    
    Change-Id: I89b7fd13a8b5b7e697ec21db74fdf8ef088fdb92

diff --git a/liblangtag/makefile.mk b/liblangtag/makefile.mk
index ae6f58e..39ca099 100644
--- a/liblangtag/makefile.mk
+++ b/liblangtag/makefile.mk
@@ -101,6 +101,14 @@ CONFIGURE_ACTION=$(AUGMENT_LIBRARY_PATH) ./configure
 BUILD_ACTION=$(AUGMENT_LIBRARY_PATH) $(GNUMAKE) && \
                         $(AUGMENT_LIBRARY_PATH) $(GNUMAKE) install 
DESTDIR=$(my_destdir)
 
+.IF "$(SYSTEM_LIBXML)"!="YES" || "$(SYSTEM_GLIB)"!="YES"
+.IF "$(OS)"=="FREEBSD" || "$(OS)"=="LINUX"
+CONFIGURE_FLAGS+= \
+ LDFLAGS=-Wl,-z,origin\ 
-Wl,-rpath,\'\$$\$$ORIGIN:\$$\$$ORIGIN/../ure-link/lib\'
+.ELIF "$(OS)"=="SOLARIS"
+CONFIGURE_FLAGS+= LDFLAGS=-Wl,-R\'\$$\$$ORIGIN:\$$\$$ORIGIN/../ure-link/lib\'
+.END
+.END
 
 .IF "$(GUI)"=="WNT"
 .IF "$(COM)"=="GCC"
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to