Kaydet (Commit) 0415e269 authored tarafından PriyankaGaikwad's avatar PriyankaGaikwad Kaydeden (comit) Miklos Vajna

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
üst d2c08569
......@@ -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();
......
......@@ -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)
{
......
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment