summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/qa/extras/ooxmlexport/data/tdf154481.docxbin0 -> 46878 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport17.cxx6
-rw-r--r--writerfilter/source/dmapper/DomainMapper_Impl.cxx9
3 files changed, 15 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf154481.docx b/sw/qa/extras/ooxmlexport/data/tdf154481.docx
new file mode 100644
index 000000000000..bfbfeda7687a
--- /dev/null
+++ b/sw/qa/extras/ooxmlexport/data/tdf154481.docx
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx
index 890f1104ee9b..fed8066f87f8 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport17.cxx
@@ -1083,6 +1083,12 @@ DECLARE_OOXMLEXPORT_TEST(testTdf148132, "tdf148132.docx")
}
}
+CPPUNIT_TEST_FIXTURE(Test, testTdf154481)
+{
+ createSwDoc("tdf154481.docx");
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Missing pages!", 7, getPages());
+}
+
CPPUNIT_TEST_FIXTURE(Test, testTdf149200)
{
loadAndSave("tdf149200.docx");
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 6a7e9a405ee1..f76ca11b01a1 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -5189,6 +5189,15 @@ void DomainMapper_Impl::PushTextBoxContent()
if (m_bIsInTextBox)
return;
+ // tdf#154481: check for TOC creation with empty field stack,
+ // and close TOC, unless pages will lost. FIXME.
+ if (IsInTOC() && m_aFieldStack.size() == 0)
+ {
+ m_bStartTOC = false;
+ SAL_WARN("writerfilter.dmapper",
+ "broken TOC creation in textbox, but field stack is empty, so closing TOC!");
+ }
+
try
{
uno::Reference<text::XTextFrame> xTBoxFrame(