sw/source/core/layout/sectfrm.cxx | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-)
New commits: commit 8f0f5353b079073b450c099bea659bcd4848f830 Author: Michael Stahl <mst...@redhat.com> Date: Mon Mar 19 16:54:33 2018 +0100 sw: more tweaks to sanity check in SwFrame::GetNextSctLeaf() * ooo50432-1.sxw has a move from a page with columns to a page without columns * kde327565-1.odt has a move from a page without columns to a page with columns * novell348228-1.odt has a section inside a fly frame that has no mpUpper Change-Id: I65afbbad7bb1b7aa3bf7cac8ff78e864adf66c3c Reviewed-on: https://gerrit.libreoffice.org/51572 Reviewed-by: Michael Stahl <mst...@redhat.com> Tested-by: Jenkins <c...@libreoffice.org> diff --git a/sw/source/core/layout/sectfrm.cxx b/sw/source/core/layout/sectfrm.cxx index e175ee709221..62b3e7f310d3 100644 --- a/sw/source/core/layout/sectfrm.cxx +++ b/sw/source/core/layout/sectfrm.cxx @@ -1594,7 +1594,7 @@ SwLayoutFrame *SwFrame::GetNextSctLeaf( MakePageType eMakePage ) #ifndef NDEBUG std::vector<SwFrame *> parents; - for (SwFrame * pTmp = GetUpper(); !pTmp->IsPageFrame(); pTmp = pTmp->GetUpper()) + for (SwFrame * pTmp = GetUpper(); pTmp && !pTmp->IsPageFrame(); pTmp = pTmp->GetUpper()) { parents.push_back(pTmp); } @@ -1761,7 +1761,15 @@ SwLayoutFrame *SwFrame::GetNextSctLeaf( MakePageType eMakePage ) for ( ; iter != parents.end(); ++iter) { - assert(!pTmp->IsPageFrame()); + if (pTmp->IsPageFrame()) + { + if ((*iter)->IsColumnFrame() && + (iter + 1) != parents.end() && (*(iter + 1))->IsBodyFrame()) + { // page style has columns - evidently these are + break; // added later? + } + assert(!pTmp->IsPageFrame()); + } assert(pTmp->GetType() == (*iter)->GetType()); // for cell frames and table frames: // 1) there may be multiple follow frames of the old one @@ -1802,7 +1810,11 @@ SwLayoutFrame *SwFrame::GetNextSctLeaf( MakePageType eMakePage ) } pTmp = pTmp->GetUpper(); } - assert(pTmp->IsPageFrame()); + assert(pTmp == nullptr /* SwFlyAtContentFrame case */ + || pTmp->IsPageFrame() // usual case + // the new page has columns, but the old page did not + || (pTmp->IsColumnFrame() && pTmp->GetUpper()->IsBodyFrame() + && pTmp->GetUpper()->GetUpper()->IsPageFrame())); } #endif _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits