[Libreoffice-commits] core.git: Branch 'libreoffice-4-0' - RepositoryExternal.mk unoxml/source

Michael Stahl mstahl at redhat.com
Wed Jun 26 14:49:34 PDT 2013


 RepositoryExternal.mk                   |    2 ++
 unoxml/source/rdf/librdf_repository.cxx |   16 ++++++++++++++++
 2 files changed, 18 insertions(+)

New commits:
commit 402a919c54bca942941e8ef2f0b340047fa152fc
Author: Michael Stahl <mstahl at redhat.com>
Date:   Wed Jun 26 21:57:03 2013 +0200

    fdo#64672 prevent raptor from setting global libxml2 error handlers
    
    Raptor already sets up all 4 error handlers in xmlSAXHandler so why it
    would need the global ones in addition to that is a mystery anyway.
    Messing with libxml2's globals can only cause trouble.
    
    Change-Id: I2935efe5c4cd75d48cc4ecdeaa8437e91b48349e
    (cherry picked from commit 246a78b1d2a88ff1937b09b22325d160739ef47e)
    Reviewed-on: https://gerrit.libreoffice.org/4554
    Reviewed-by: Fridrich Strba <fridrich at documentfoundation.org>
    Tested-by: Fridrich Strba <fridrich at documentfoundation.org>

diff --git a/RepositoryExternal.mk b/RepositoryExternal.mk
index e153b74..75d13a1 100644
--- a/RepositoryExternal.mk
+++ b/RepositoryExternal.mk
@@ -692,11 +692,13 @@ else # !SYSTEM_REDLAND
 ifneq ($(OS),ANDROID)
 
 $(eval $(call gb_Helper_register_libraries,PLAINLIBS_OOO, \
+	raptor \
 	rdf \
 ))
 
 define gb_LinkTarget__use_librdf
 $(call gb_LinkTarget_use_libraries,$(1),\
+	raptor \
 	rdf \
 )
 
diff --git a/unoxml/source/rdf/librdf_repository.cxx b/unoxml/source/rdf/librdf_repository.cxx
index 733b313..760049d 100644
--- a/unoxml/source/rdf/librdf_repository.cxx
+++ b/unoxml/source/rdf/librdf_repository.cxx
@@ -1903,6 +1903,18 @@ librdf_Repository::getStatementsGraph(
     return new librdf_GraphResult(this, m_aMutex, pStream, pContext);
 }
 
+#ifdef RAPTOR_V2_AVAILABLE
+extern "C"
+void librdf_raptor_init(void* /*user_data*/, raptor_world* pRaptorWorld)
+{
+    // fdo#64672 prevent raptor from setting global libxml2 error handlers
+    raptor_world_set_flag(pRaptorWorld,
+            RAPTOR_WORLD_FLAG_LIBXML_STRUCTURED_ERROR_SAVE, 0);
+    raptor_world_set_flag(pRaptorWorld,
+            RAPTOR_WORLD_FLAG_LIBXML_GENERIC_ERROR_SAVE, 0);
+}
+#endif
+
 librdf_world *librdf_TypeConverter::createWorld() const
 {
     // create and initialize world
@@ -1912,6 +1924,10 @@ librdf_world *librdf_TypeConverter::createWorld() const
             "librdf_TypeConverter::createWorld: librdf_new_world failed",
             m_rRep);
     }
+#ifdef RAPTOR_V2_AVAILABLE
+    // note for the bundled raptor V1 a patch is applied instead
+    librdf_world_set_raptor_init_handler(pWorld, 0, &librdf_raptor_init);
+#endif
     //FIXME logger, digest, features?
     xsltSecurityPrefsPtr origprefs = xsltGetDefaultSecurityPrefs();
     librdf_world_open(pWorld);


More information about the Libreoffice-commits mailing list