From dbbfcb7e098c1c16f932785ef62ef7d3d819ad1a Mon Sep 17 00:00:00 2001 From: Justin Luth Date: Wed, 22 Feb 2023 11:19:40 -0500 Subject: [PATCH] tdf#153526 writerfilter: catch exception from no NumberingRules This fixes a LO 7.5 regression (well, exposed some other flaws) from commit cf02b94bc513ee1b742b4c5d7174632b568e8b72. I first tried testing if hasPropertyByName, but that returns true(????), even though this is an editeng component. Well, ignoring the fundamental issues at play here (and there are many - like having a comment take over m_xPreviousParagraph) the issue is easily solved with a try/catch instead of a redundant if clause. Change-Id: I4f27fce3e2984235df19dc3ed4be558891b28a90 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147486 Tested-by: Jenkins Reviewed-by: Justin Luth --- .../data/tdf153526_commentInNumbering.docx | Bin 0 -> 8910 bytes sw/qa/extras/ooxmlexport/ooxmlexport18.cxx | 7 +++++++ .../source/dmapper/DomainMapper_Impl.cxx | 11 +++++++---- 3 files changed, 14 insertions(+), 4 deletions(-) create mode 100644 sw/qa/extras/ooxmlexport/data/tdf153526_commentInNumbering.docx diff --git a/sw/qa/extras/ooxmlexport/data/tdf153526_commentInNumbering.docx b/sw/qa/extras/ooxmlexport/data/tdf153526_commentInNumbering.docx new file mode 100644 index 0000000000000000000000000000000000000000..f26240092c101b9bc2ff4eac2795b366274a8e1c GIT binary patch literal 8910 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 literal 0 HcmV?d00001 diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx index 8b6795b726c5..2e71b5bcc7fe 100644 --- a/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx +++ b/sw/qa/extras/ooxmlexport/ooxmlexport18.cxx @@ -80,6 +80,13 @@ DECLARE_OOXMLEXPORT_TEST(testTdf147646, "tdf147646_mergedCellNumbering.docx") CPPUNIT_ASSERT_EQUAL(OUString("2."),parseDump("/root/page/body/tab/row[4]/cell/txt/SwParaPortion/SwLineLayout/child::*[@type='PortionType::Number']","expand")); } +DECLARE_OOXMLEXPORT_TEST(testTdf153526_commentInNumbering, "tdf153526_commentInNumbering.docx") +{ + // an exception was prematurely ending finishParagraph, losing numbering and CRs + // so before the patch, this was 6. + CPPUNIT_ASSERT_EQUAL(13, getParagraphs()); +} + DECLARE_OOXMLEXPORT_TEST(testTdf153042_largeTab, "tdf153042_largeTab.docx") { // This is not the greatest test because it is slightly weird, and has a different layout diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx index efc83477f818..558d71f90fe7 100644 --- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx +++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx @@ -2332,11 +2332,14 @@ void DomainMapper_Impl::finishParagraph( const PropertyMapPtr& pPropertyMap, con uno::Reference xCurrentNumberingRules(itNumberingRules->Value, uno::UNO_QUERY); if (xCurrentNumberingRules.is()) aCurrentNumberingName = xCurrentNumberingRules->getName(); - if (m_xPreviousParagraph.is()) + try { - uno::Reference xPreviousNumberingRules(m_xPreviousParagraph->getPropertyValue("NumberingRules"), uno::UNO_QUERY); - if (xPreviousNumberingRules.is()) - aPreviousNumberingName = xPreviousNumberingRules->getName(); + uno::Reference xPreviousNumberingRules(m_xPreviousParagraph->getPropertyValue("NumberingRules"), uno::UNO_QUERY_THROW); + aPreviousNumberingName = xPreviousNumberingRules->getName(); + } + catch (const uno::Exception&) + { + TOOLS_WARN_EXCEPTION("writerfilter", "DomainMapper_Impl::finishParagraph NumberingRules"); } } else if ( m_xPreviousParagraph->getPropertySetInfo()->hasPropertyByName("NumberingStyleName") &&