summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/source/app/main.c14
-rw-r--r--unoxml/source/rdf/librdf_repository.cxx6
2 files changed, 20 insertions, 0 deletions
diff --git a/desktop/source/app/main.c b/desktop/source/app/main.c
index ae016b498297..c18fabd158d2 100644
--- a/desktop/source/app/main.c
+++ b/desktop/source/app/main.c
@@ -25,4 +25,18 @@ SAL_IMPLEMENT_MAIN() {
return soffice_main();
}
+#ifdef DBG_UTIL
+#ifdef __gnu_linux__
+#include <stdio.h>
+#include <stdlib.h>
+
+/* HACK: detect calls to xmlCleanupParser, which causes hard to debug crashes */
+__attribute__ ((visibility("default"))) void xmlCleanupParser(void)
+{
+ fprintf(stderr, "\n*** ERROR: DO NOT call xmlCleanupParser()\n\n");
+ abort();
+}
+#endif
+#endif
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/unoxml/source/rdf/librdf_repository.cxx b/unoxml/source/rdf/librdf_repository.cxx
index 733b3132e0c4..1e98ee5a6fcf 100644
--- a/unoxml/source/rdf/librdf_repository.cxx
+++ b/unoxml/source/rdf/librdf_repository.cxx
@@ -127,7 +127,13 @@ bool isInternalContext(librdf_node *i_pNode) throw ()
// so they need to be wrapped to be usable with boost::shared_ptr.
static void safe_librdf_free_world(librdf_world *const world)
{
+#if 1
+ (void)world; // leak it
+#else
+ // disable this for now: it calls xmlCleanupParser, which now aborts
+ // (see desktop/source/app/main.c)
if (world) { librdf_free_world(world); }
+#endif
}
static void safe_librdf_free_model(librdf_model *const model)
{