diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2020-01-28 13:22:56 +0300 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2020-01-28 14:16:04 +0100 |
commit | eca00082c78fddf79f247057227404738be8806c (patch) | |
tree | 566f350a7d0d57b56be6a8191510a478aabc53b7 | |
parent | 39e08a2bd1e2f9d451e09d11a33c99ff4c49b077 (diff) |
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@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r-- | sw/qa/extras/ooxmlimport/data/tdf130214.docx | bin | 0 -> 23057 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlimport/ooxmlimport2.cxx | 5 | ||||
-rw-r--r-- | writerfilter/source/dmapper/DomainMapper_Impl.cxx | 6 |
3 files changed, 11 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlimport/data/tdf130214.docx b/sw/qa/extras/ooxmlimport/data/tdf130214.docx Binary files differnew file mode 100644 index 000000000000..4344e1c6e44e --- /dev/null +++ b/sw/qa/extras/ooxmlimport/data/tdf130214.docx 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); |