5e6c595e9d
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
20 lines
486 B
Diff
20 lines
486 B
Diff
--- 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);
|