[Libreoffice-commits] core.git: sw/source

Michael Stahl (via logerrit) logerrit at kemper.freedesktop.org
Mon Jun 3 08:43:01 UTC 2019


 sw/source/core/layout/calcmove.cxx |    4 ++++
 1 file changed, 4 insertions(+)

New commits:
commit 1416c5426a757d32f223cab46bf9038bd7f21d48
Author:     Michael Stahl <Michael.Stahl at cib.de>
AuthorDate: Sun Jun 2 13:58:01 2019 +0200
Commit:     Michael Stahl <Michael.Stahl at cib.de>
CommitDate: Mon Jun 3 10:42:08 2019 +0200

    tdf#119109 sw: tweak assertion in PrepareMake()
    
    Empty section frames cause trouble for the assert added in
    e14056e6e88d9b8d988b7b88b2776a8fc952031b:
    
    * existing ones may be skipped by MoveBwd(), so a SwTextFrame moves to
      the previous page but the SwSectionFrame that was its mpPrev remains
      on this page; e.g. ooo110854-1.rtf
    
    * a SwSectionFrame moves backward, then some SwTextFrame in it splits
      and the follow tries to move forward, resulting in *new*
      SwSectionFrames on this page that are empty (because the follow is
      eventually joined again); e.g. abi3213-1.rtf
    
    So if there's a section frame, assume it's SNAFU and don't assert.
    
    Change-Id: Ibdca2aa39fae123583e5edf5173f80e8b70ef335
    Reviewed-on: https://gerrit.libreoffice.org/73333
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <Michael.Stahl at cib.de>

diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx
index 051bd6ca5a9c..fc4bc4567079 100644
--- a/sw/source/core/layout/calcmove.cxx
+++ b/sw/source/core/layout/calcmove.cxx
@@ -319,6 +319,8 @@ void SwFrame::PrepareMake(vcl::RenderContext* pRenderContext)
                     if (isLast && pFrame->GetUpper() != GetUpper())
                     {
                         assert(GetUpper()->Lower() == this
+                            // empty section frames are created all the time...
+                            || GetUpper()->Lower()->IsSctFrame()
                             // tab frame/section frame may split multiple times
                             || (   SwFlowFrame::CastFlowFrame(pFrame)
                                 && SwFlowFrame::CastFlowFrame(GetUpper()->Lower())
@@ -441,6 +443,8 @@ void SwFrame::PrepareCursor()
                 if (isLast && pFrame->GetUpper() != GetUpper())
                 {
                     assert(GetUpper()->Lower() == this
+                        // empty section frames are created all the time...
+                        || GetUpper()->Lower()->IsSctFrame()
                         // tab frame/section frame may split multiple times
                         || (   SwFlowFrame::CastFlowFrame(pFrame)
                             && SwFlowFrame::CastFlowFrame(GetUpper()->Lower())


More information about the Libreoffice-commits mailing list