Kaydet (Commit) e4989ae8 authored tarafından Caolán McNamara's avatar Caolán McNamara

tdf#117086 crash on deleted SwFootnoteBossFrame

use SwFrameDeleteGuard to lock pOldBoss to exist over the range
its directly accessed

Change-Id: I68af80114a380f68b86cbc78278fb9e5e87cccce
Reviewed-on: https://gerrit.libreoffice.org/58991Reviewed-by: 's avatarCaolán McNamara <caolanm@redhat.com>
Tested-by: 's avatarCaolán McNamara <caolanm@redhat.com>
üst c144dcbd
...@@ -1872,6 +1872,8 @@ bool SwFlowFrame::MoveFwd( bool bMakePage, bool bPageBreak, bool bMoveAlways ) ...@@ -1872,6 +1872,8 @@ bool SwFlowFrame::MoveFwd( bool bMakePage, bool bPageBreak, bool bMoveAlways )
} }
} }
std::unique_ptr<SwFrameDeleteGuard> xDeleteGuard(bMakePage ? new SwFrameDeleteGuard(pOldBoss) : nullptr);
bool bSamePage = true; bool bSamePage = true;
SwLayoutFrame *pNewUpper = SwLayoutFrame *pNewUpper =
m_rThis.GetLeaf( bMakePage ? MAKEPAGE_INSERT : MAKEPAGE_NONE, true ); m_rThis.GetLeaf( bMakePage ? MAKEPAGE_INSERT : MAKEPAGE_NONE, true );
...@@ -1910,6 +1912,8 @@ bool SwFlowFrame::MoveFwd( bool bMakePage, bool bPageBreak, bool bMoveAlways ) ...@@ -1910,6 +1912,8 @@ bool SwFlowFrame::MoveFwd( bool bMakePage, bool bPageBreak, bool bMoveAlways )
pOldBoss = pOldBoss->FindFootnoteBossFrame( true ); pOldBoss = pOldBoss->FindFootnoteBossFrame( true );
SwPageFrame* pNewPage = pOldPage; SwPageFrame* pNewPage = pOldPage;
xDeleteGuard.reset();
// First, we move the footnotes. // First, we move the footnotes.
bool bFootnoteMoved = false; bool bFootnoteMoved = false;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment