[Libreoffice-commits] core.git: sw/qa writerfilter/source

Mike Kaganski (via logerrit) logerrit at kemper.freedesktop.org
Tue Jan 28 13:16:37 UTC 2020


 sw/qa/extras/ooxmlimport/data/tdf130214.docx      |binary
 sw/qa/extras/ooxmlimport/ooxmlimport2.cxx         |    5 +++++
 writerfilter/source/dmapper/DomainMapper_Impl.cxx |    6 ++++++
 3 files changed, 11 insertions(+)

New commits:
commit eca00082c78fddf79f247057227404738be8806c
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Tue Jan 28 13:22:56 2020 +0300
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Tue Jan 28 14:16:04 2020 +0100

    tdf#130214: workaround invalid state resulting from error on import
    
    Obviously the real error is somewhere else, which results in tdf#126435,
    and produces unexpected state with missing text append context on stack.
    This is just a hack to avoid crash.
    
    Change-Id: I420ac3b74f5efb9688dc764ac2ad0dcc974ba0e1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87595
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>
    Tested-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/sw/qa/extras/ooxmlimport/data/tdf130214.docx b/sw/qa/extras/ooxmlimport/data/tdf130214.docx
new file mode 100644
index 000000000000..4344e1c6e44e
Binary files /dev/null and b/sw/qa/extras/ooxmlimport/data/tdf130214.docx differ
diff --git a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx
index 2983be1076e1..593947fd77ab 100644
--- a/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx
+++ b/sw/qa/extras/ooxmlimport/ooxmlimport2.cxx
@@ -531,6 +531,11 @@ DECLARE_OOXMLIMPORT_TEST(testTdf103345, "numbering-circle.docx")
     }
 }
 
+DECLARE_OOXMLIMPORT_TEST(testTdf130214, "tdf130214.docx")
+{
+    // Currently this file imports with errors because of tdf#126435; it must not segfault on load
+}
+
 // tests should only be added to ooxmlIMPORT *if* they fail round-tripping in ooxmlEXPORT
 
 CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 24f769338c94..ee9e1fb55d62 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -4516,6 +4516,12 @@ void DomainMapper_Impl::handleBibliography
     (const FieldContextPtr& pContext,
     const OUString & sTOCServiceName)
 {
+    if (m_aTextAppendStack.empty())
+    {
+        // tdf#130214: a workaround to avoid crash on import errors
+        SAL_WARN("writerfilter.dmapper", "no text append stack");
+        return;
+    }
     // Create section before setting m_bStartTOC and m_bStartBibliography: finishing paragraph
     // inside StartIndexSectionChecked could do the wrong thing otherwise
     const auto xTOC = StartIndexSectionChecked(sTOCServiceName);


More information about the Libreoffice-commits mailing list