diff options
author | Mike Kaganski <mike.kaganski@collabora.com> | 2018-06-18 14:09:56 +1000 |
---|---|---|
committer | Mike Kaganski <mike.kaganski@collabora.com> | 2018-06-18 09:11:13 +0200 |
commit | c67b7d795589aaf8f3396a379ef348bd650cb2dc (patch) | |
tree | 68dff25e221c8fbfb23d3047ad1894b919c594ae | |
parent | 6816c74e915b91b6ecfbede59b14ee6d9e4f2379 (diff) |
tdf#107969: use proper serializer for VML in footnotes/endnotes
Change-Id: Ie0e062fab0ae1a63094655cc0f6bee958b4c1087
Reviewed-on: https://gerrit.libreoffice.org/55978
Tested-by: Jenkins
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
-rw-r--r-- | sw/qa/extras/ooxmlexport/data/tdf107969.docx | bin | 0 -> 28622 bytes | |||
-rw-r--r-- | sw/qa/extras/ooxmlexport/ooxmlexport11.cxx | 7 | ||||
-rw-r--r-- | sw/source/filter/ww8/docxexport.cxx | 6 |
3 files changed, 13 insertions, 0 deletions
diff --git a/sw/qa/extras/ooxmlexport/data/tdf107969.docx b/sw/qa/extras/ooxmlexport/data/tdf107969.docx Binary files differnew file mode 100644 index 000000000000..e674bcb5db72 --- /dev/null +++ b/sw/qa/extras/ooxmlexport/data/tdf107969.docx diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx index 6d099e57f8bb..87d35f8a300c 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport11.cxx @@ -388,6 +388,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf116801, "tdf116801.docx") CPPUNIT_ASSERT_EQUAL(OUString("D1"), xCell->getString()); } +DECLARE_OOXMLEXPORT_TEST(testTdf107969, "tdf107969.docx") +{ + // A VML object in a footnote's tracked changes caused write past end of document.xml at export to docx. + // After that, importing after export failed with + // SAXParseException: '[word/document.xml line 2]: Extra content at the end of the document', Stream 'word/document.xml'. +} + CPPUNIT_PLUGIN_IMPLEMENT(); /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/sw/source/filter/ww8/docxexport.cxx b/sw/source/filter/ww8/docxexport.cxx index 0e04a2220a5e..9355677fed3c 100644 --- a/sw/source/filter/ww8/docxexport.cxx +++ b/sw/source/filter/ww8/docxexport.cxx @@ -681,11 +681,14 @@ void DocxExport::WriteFootnotesEndnotes() m_pAttrOutput->SetSerializer( pFootnotesFS ); // tdf#99227 m_pSdrExport->setSerializer( pFootnotesFS ); + // tdf#107969 + m_pVMLExport->SetFS(pFootnotesFS); // do the work m_pAttrOutput->FootnotesEndnotes( true ); // switch the serializer back + m_pVMLExport->SetFS(m_pDocumentFS); m_pSdrExport->setSerializer( m_pDocumentFS ); m_pAttrOutput->SetSerializer( m_pDocumentFS ); } @@ -705,11 +708,14 @@ void DocxExport::WriteFootnotesEndnotes() m_pAttrOutput->SetSerializer( pEndnotesFS ); // tdf#99227 m_pSdrExport->setSerializer( pEndnotesFS ); + // tdf#107969 + m_pVMLExport->SetFS(pEndnotesFS); // do the work m_pAttrOutput->FootnotesEndnotes( false ); // switch the serializer back + m_pVMLExport->SetFS(m_pDocumentFS); m_pSdrExport->setSerializer( m_pDocumentFS ); m_pAttrOutput->SetSerializer( m_pDocumentFS ); } |