sw/source/core/layout/sectfrm.cxx | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)
New commits: commit 5f0f69ba9b7d083cf7c0169be6e9c916008787bb Author: Michael Stahl <michael.st...@allotropia.de> AuthorDate: Mon Sep 2 13:46:12 2024 +0200 Commit: Michael Stahl <michael.st...@allotropia.de> CommitDate: Mon Sep 2 16:06:08 2024 +0200 sw: fix iterating columned sections in SwSectionFrame::SwClientNotify() This was asserting in JunitTest_sw_unoapi_3 on libreoffice-24-2 branch but strangely enough not on master. (regression from commit a97e245ba11598050e1800fde9ace796d20e9df2) Change-Id: Id71dac03992fff0294ab1b2c6d9f3bf10b8c3974 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/172740 Tested-by: Jenkins Reviewed-by: Michael Stahl <michael.st...@allotropia.de> diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx index 2bab18a2888e..6649a0023007 100644 --- a/sw/source/core/layout/sectfrm.cxx +++ b/sw/source/core/layout/sectfrm.cxx @@ -2774,7 +2774,29 @@ void SwSectionFrame::SwClientNotify(const SwModify& rMod, const SfxHint& rHint) pFirstOnPage = pFirstOnPage->GetUpper(); } assert(pFirstOnPage->IsContentFrame() || pFirstOnPage->IsTabFrame()); - for (SwFrame* pLowerFrame = Lower(); pLowerFrame; pLowerFrame = pLowerFrame->GetNext()) + SwColumnFrame * pColumn{Lower()->IsColumnFrame() + ? static_cast<SwColumnFrame*>(Lower()) : nullptr}; + auto IterateLower = [&pColumn](SwFrame *const pLowerFrame) -> SwFrame* + { + if (pLowerFrame->GetNext()) + { + return pLowerFrame->GetNext(); + } + if (pColumn) + { + pColumn = static_cast<SwColumnFrame*>(pColumn->GetNext()); + if (pColumn) + { + return static_cast<SwLayoutFrame*>(pColumn->Lower())->Lower(); + } + } + return nullptr; + }; + for (SwFrame* pLowerFrame = pColumn + ? static_cast<SwLayoutFrame*>(pColumn->Lower())->Lower() + : Lower(); + pLowerFrame; + pLowerFrame = IterateLower(pLowerFrame)) { if (pLowerFrame == pFirstOnPage) {