[Libreoffice-commits] core.git: sw/qa sw/source
PriyankaGaikwad
priyanka.gaikwad at synerzip.com
Wed Mar 5 01:53:23 PST 2014
sw/qa/extras/ooxmlexport/data/tableCurrupt.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 9 +++++++++
sw/source/filter/ww8/docxattributeoutput.cxx | 11 +++++++++++
sw/source/filter/ww8/docxattributeoutput.hxx | 2 ++
4 files changed, 22 insertions(+)
New commits:
commit 0415e2696156b25226f21085a0716187f83c2f4b
Author: PriyankaGaikwad <priyanka.gaikwad at synerzip.com>
Date: Thu Feb 27 17:42:52 2014 +0530
fdo#73219 File corruption: Table in header
Description:
File corrupt due to the end tag </w:tc> </w:tr> </w:tbl> are missing after roundtrip in header4.xml
Conflicts:
sw/qa/extras/ooxmlexport/ooxmlexport.cxx
Reviewed on:
https://gerrit.libreoffice.org/8378
Change-Id: Ib05a50b3b3beca6c744b93360f9341ddcaa1a22a
diff --git a/sw/qa/extras/ooxmlexport/data/tableCurrupt.docx b/sw/qa/extras/ooxmlexport/data/tableCurrupt.docx
new file mode 100644
index 0000000..1deda7d
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tableCurrupt.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 094519c..4c1ba4f 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -2962,6 +2962,15 @@ DECLARE_OOXMLEXPORT_TEST(testFdo74792, "fdo74792.docx")
CPPUNIT_ASSERT( xInputStream.is() );
}
+DECLARE_OOXMLEXPORT_TEST(testTableCurruption, "tableCurrupt.docx")
+{
+ xmlDocPtr pXmlDoc = parseExport("word/header4.xml");
+ if (!pXmlDoc)
+ return;
+ CPPUNIT_ASSERT(pXmlDoc) ;
+ assertXPath(pXmlDoc, "/w:hdr/w:tbl[1]/w:tr[1]/w:tc[1]",1);
+}
+
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/docxattributeoutput.cxx b/sw/source/filter/ww8/docxattributeoutput.cxx
index d7d9dea..2fe102c 100644
--- a/sw/source/filter/ww8/docxattributeoutput.cxx
+++ b/sw/source/filter/ww8/docxattributeoutput.cxx
@@ -251,9 +251,18 @@ void DocxAttributeOutput::StartParagraph( ww8::WW8TableNodeInfo::Pointer_t pText
{
ww8::WW8TableNodeInfoInner::Pointer_t pInner( pTextNodeInfo->getInnerForDepth( nDepth ) );
+ if (m_tableReference->m_pOldTablepInner && m_tableReference->m_pOldTablepInner->getTable() == pInner->getTable() && nCurrentDepth > 1 && nDepth != 1)
+ {
+ m_tableReference->m_pOldTablepInner = pInner;
+ break;
+ }
+ else
+ {
StartTable( pInner );
StartTableRow( pInner );
StartTableCell( pInner );
+ m_tableReference->m_pOldTablepInner = pInner;
+ }
}
m_tableReference->m_nTableDepth = nCurrentDepth;
@@ -2366,8 +2375,10 @@ void DocxAttributeOutput::switchHeaderFooter(bool isHeaderFooter, sal_Int32 inde
{
m_oldTableReference->m_bTableCellOpen = m_tableReference->m_bTableCellOpen;
m_oldTableReference->m_nTableDepth = m_tableReference->m_nTableDepth;
+ m_oldTableReference->m_pOldTablepInner = m_tableReference->m_pOldTablepInner;
m_tableReference->m_bTableCellOpen = false;
m_tableReference->m_nTableDepth = 0;
+ m_pSectionInfo.reset();
}
else if( index == -1)
{
diff --git a/sw/source/filter/ww8/docxattributeoutput.hxx b/sw/source/filter/ww8/docxattributeoutput.hxx
index b765315..6012f43 100644
--- a/sw/source/filter/ww8/docxattributeoutput.hxx
+++ b/sw/source/filter/ww8/docxattributeoutput.hxx
@@ -113,6 +113,8 @@ struct TableReference
/// Remember the current table depth.
sal_uInt32 m_nTableDepth;
+ ww8::WW8TableNodeInfoInner::Pointer_t m_pOldTablepInner;
+
TableReference()
: m_bTableCellOpen(false),
m_nTableDepth(0)
More information about the Libreoffice-commits
mailing list