summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sw/ooxmlexport_setup.mk1
-rw-r--r--sw/qa/extras/ooxmlexport/data/ooo96040-2.odtbin308517 -> 289214 bytes
-rw-r--r--sw/qa/extras/ooxmlexport/ooxmlexport5.cxx8
-rw-r--r--sw/source/filter/ww8/docxattributeoutput.cxx8
4 files changed, 17 insertions, 0 deletions
diff --git a/sw/ooxmlexport_setup.mk b/sw/ooxmlexport_setup.mk
index 5a0cc3b2ef20..a3a2182cd9c4 100644
--- a/sw/ooxmlexport_setup.mk
+++ b/sw/ooxmlexport_setup.mk
@@ -30,6 +30,7 @@ define sw_ooxmlexport_components
chart2/source/controller/chartcontroller \
comphelper/util/comphelp \
configmgr/source/configmgr \
+ dbaccess/util/dba \
drawinglayer/drawinglayer \
embeddedobj/util/embobj \
filter/source/config/cache/filterconfig1 \
diff --git a/sw/qa/extras/ooxmlexport/data/ooo96040-2.odt b/sw/qa/extras/ooxmlexport/data/ooo96040-2.odt
index e8e7e997f0e5..35a1858e533e 100644
--- a/sw/qa/extras/ooxmlexport/data/ooo96040-2.odt
+++ b/sw/qa/extras/ooxmlexport/data/ooo96040-2.odt
Binary files differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
index 4cf50c9433e9..a7f6078c6f7d 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport5.cxx
@@ -262,6 +262,14 @@ DECLARE_OOXMLEXPORT_TEST(testOldComplexMergeleft, "tdf90681-2.odt")
assertXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tr[2]/w:tc[1]/w:tcPr/w:vMerge", "val", "continue");
}
+DECLARE_OOXMLEXPORT_TEST(testOldComplexMergeTableInTable, "ooo96040-2.odt")
+{
+ xmlDocPtr pXmlDoc = parseExport("word/document.xml");
+
+ if (!pXmlDoc)
+ return;
+}
+
DECLARE_OOXMLEXPORT_TEST(testTablePreferredWidth, "tablePreferredWidth.docx")
{
xmlDocPtr pXmlDoc = parseExport("word/document.xml");
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index ad8e94d74277..986f3335fd7b 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -736,6 +736,14 @@ void DocxAttributeOutput::FinishTableRowCell( ww8::WW8TableNodeInfoInner::Pointe
if ( bEndCell )
{
+ while (pInner->getDepth() < m_tableReference->m_nTableDepth)
+ {
+ //we expect that the higher depth row was closed, and
+ //we are just missing the table close
+ assert(lastOpenCell.back() == -1 && lastClosedCell.back() == -1);
+ EndTable();
+ }
+
SyncNodelessCells(pInner, nCell, nRow);
sal_Int32 nClosedCell = lastClosedCell.back();