sw/qa/extras/ooxmlexport/data/tdf104162.docx |binary sw/qa/extras/ooxmlexport/ooxmlexport7.cxx | 8 ++++++++ writerfilter/source/dmapper/DomainMapperTableHandler.cxx | 8 ++++++++ 3 files changed, 16 insertions(+)
New commits: commit 24ed49a2547349634cc8fa2f0f65f52bfc7c3d63 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Mon Dec 19 19:35:20 2016 +0100 tdf#104162 DOCX import: fix crash on <w:hideMark/> in a comment table sw comments are handled by editeng, so tables in comments aren't imported. That means lcl_emptyRow() may get a row where the first cell's start is an empty reference, so handle that case. (cherry picked from commit 74dddd8b483d89dc7915471441cc30a1aa342363) Conflicts: sw/qa/extras/ooxmlexport/ooxmlexport9.cxx Change-Id: I43e286314143934c20e6cbbd656d32883b6b2efe Reviewed-on: https://gerrit.libreoffice.org/32223 Tested-by: Jenkins <c...@libreoffice.org> Reviewed-by: Miklos Vajna <vmik...@collabora.co.uk> Reviewed-on: https://gerrit.libreoffice.org/33925 Reviewed-by: Michael Stahl <mst...@redhat.com> diff --git a/sw/qa/extras/ooxmlexport/data/tdf104162.docx b/sw/qa/extras/ooxmlexport/data/tdf104162.docx new file mode 100644 index 0000000..61b51c0 Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/tdf104162.docx differ diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx index 3537092..62af271 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport7.cxx @@ -1194,6 +1194,14 @@ DECLARE_OOXMLEXPORT_TEST(testTdf103544, "tdf103544.docx") CPPUNIT_ASSERT(xGraphic.is()); } +DECLARE_OOXMLEXPORT_TEST(testTdf104162, "tdf104162.docx") +{ + // This crashed: the comment field contained a table with a <w:hideMark/>. + uno::Reference<text::XTextFieldsSupplier> xTextFieldsSupplier(mxComponent, uno::UNO_QUERY); + uno::Reference<container::XElementAccess> xTextFields(xTextFieldsSupplier->getTextFields()); + CPPUNIT_ASSERT(xTextFields->hasElements()); +} + #endif CPPUNIT_PLUGIN_IMPLEMENT(); diff --git a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx index 43ef3be..a2e0495 100644 --- a/writerfilter/source/dmapper/DomainMapperTableHandler.cxx +++ b/writerfilter/source/dmapper/DomainMapperTableHandler.cxx @@ -883,6 +883,14 @@ bool lcl_emptyRow(std::vector<RowSequence_t>& rTableRanges, sal_Int32 nRow) return false; } + if (!rRowSeq[0][0].is()) + { + // This can happen when we can't import the table, e.g. we're inside a + // comment. + SAL_WARN("writerfilter.dmapper", "rRowSeq[0][0] is an empty reference"); + return false; + } + uno::Reference<text::XTextRangeCompare> xTextRangeCompare(rRowSeq[0][0]->getText(), uno::UNO_QUERY); try { _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits