[Libreoffice-commits] .: Branch 'libreoffice-3-6' - liblangtag/liblangtag-0.2-xmlCleanupParser.patch liblangtag/makefile.mk

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Thu Sep 20 10:17:41 PDT 2012


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

New commits:
commit c63f4962caefc22cbf0fa9cde87f3a49d79f0b85
Author: Stephan Bergmann <sbergman at 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).
    
    (cherry picked from commit 5e6c595e9d698caf23ae68d38b9cab30ff9c9b94)
    
    Conflicts:
    	liblangtag/makefile.mk
    
    Change-Id: I82cef8bc400d48f19eaa94f26d50d4b8589da106
    Reviewed-on: https://gerrit.libreoffice.org/662
    Reviewed-by: Michael Stahl <mstahl at redhat.com>
    Tested-by: Michael Stahl <mstahl at redhat.com>

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 7efbc32..3272698 100644
--- a/liblangtag/makefile.mk
+++ b/liblangtag/makefile.mk
@@ -37,6 +37,7 @@ PATCH_FILES=liblangtag-0.2-0001-Fix-a-memory-leak.patch
 PATCH_FILES+=liblangtag-0.2-0002-Fix-invalid-memory-access.patch
 PATCH_FILES+=liblangtag-0.2-configure.patch
 PATCH_FILES+=liblangtag-0.2-datadir.patch
+PATCH_FILES+=liblangtag-0.2-xmlCleanupParser.patch
 
 CONFIGURE_DIR=.
 BUILD_DIR=$(CONFIGURE_DIR)


More information about the Libreoffice-commits mailing list