From 5062e5faafcfbd9224ed465f579d6a932ef9841f Mon Sep 17 00:00:00 2001 From: Mike Kaganski Date: Fri, 3 Apr 2026 11:27:44 +0500 Subject: [PATCH] cool#15331: add a unit test MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Change-Id: I31f0618717ac7c54bde598bf08653b33dc7a807f Reviewed-on: https://gerrit.collaboraoffice.com/c/core/+/204 Tested-by: Caolán McNamara Tested-by: Jenkins CPCI Reviewed-by: Caolán McNamara (cherry picked from commit 170391fc3cf26c48647681cb7a5d9f861df99309) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/203635 Tested-by: Jenkins Reviewed-by: Xisco Fauli --- sw/inc/editsh.hxx | 2 +- .../uiwriter/data/floattable-nosection-7in.docx | Bin 0 -> 10433 bytes sw/qa/extras/uiwriter/uiwriter9.cxx | 14 ++++++++++++++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 sw/qa/extras/uiwriter/data/floattable-nosection-7in.docx diff --git a/sw/inc/editsh.hxx b/sw/inc/editsh.hxx index 716341d3bc56..12a0608e4480 100644 --- a/sw/inc/editsh.hxx +++ b/sw/inc/editsh.hxx @@ -708,7 +708,7 @@ public: /// Update content of all charts for table with given name. void UpdateCharts( const UIName& rName ); - OUString GetCurWord() const; + SW_DLLPUBLIC OUString GetCurWord() const; // used in CppunitTest_sw_uiwriter9 /** Glossary from glossary document in current document. Styles only if not already existent. */ diff --git a/sw/qa/extras/uiwriter/data/floattable-nosection-7in.docx b/sw/qa/extras/uiwriter/data/floattable-nosection-7in.docx new file mode 100644 index 0000000000000000000000000000000000000000..8d5167af9a3aa711bb9aa9e85b5eb841014736a1 GIT binary patch literal 10433 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 v|Hj9W{vTxhC;U$e`3GetVirtPageNum()); } +CPPUNIT_TEST_FIXTURE(SwUiWriterTest9, testSplitFloattableGetCurWord) +{ + // Given a document with a floating table that splits across pages: the anchor paragraph has + // text; it's split together with its floating table; and its first frame has no SwParaPortion + // (only the last follow frame has it). + createSwDoc("floattable-nosection-7in.docx"); + SwWrtShell* pWrtShell = getSwDocShell()->GetWrtShell(); + // Go to end (the anchor paragraph for the floating table) + pWrtShell->SttEndDoc(/*bStt=*/false); + + // Without the fix this would crash + CPPUNIT_ASSERT_EQUAL(u"End"_ustr, pWrtShell->GetCurWord()); +} + } // end of anonymous namespace CPPUNIT_PLUGIN_IMPLEMENT();