sw/source/core/inc/frame.hxx | 5 +++++ sw/source/core/layout/calcmove.cxx | 2 ++ sw/source/core/layout/wsfrm.cxx | 1 + sw/source/core/text/frmform.cxx | 2 ++ 4 files changed, 10 insertions(+)
New commits: commit 068c4df48fd1d9f4c42864733b80e7cbd7f5d006 Author: Caolán McNamara <caol...@redhat.com> Date: Fri May 8 16:46:48 2015 +0100 Resolves: ooo#119155 don't crash with odd content in footnotes hit it with a large and simple hammer Change-Id: Ib0e55ad64780efc7664ccd9a2684fbe7dba87498 diff --git a/sw/source/core/inc/frame.hxx b/sw/source/core/inc/frame.hxx index bc729ca..165a94e 100644 --- a/sw/source/core/inc/frame.hxx +++ b/sw/source/core/inc/frame.hxx @@ -358,6 +358,7 @@ protected: bool mbColLocked : 1; // lock Grow/Shrink for column-wise section // or fly frames, will be set in Format bool m_isInDestroy : 1; + bool mbForbidDelete : 1; void ColLock() { mbColLocked = true; } void ColUnlock() { mbColLocked = false; } @@ -808,6 +809,7 @@ public: bool IsProtected() const; bool IsColLocked() const { return mbColLocked; } + bool IsDeleteForbidden() const { return mbForbidDelete; } /// this is the only way to delete a SwFrm instance static void DestroyFrm(SwFrm *const pFrm); @@ -858,6 +860,9 @@ public: void RegisterToFormat( SwFmt& rFmt ); void ValidateThisAndAllLowers( const sal_uInt16 nStage ); + void ForbidDelete() { mbForbidDelete = true; } + void AllowDelete() { mbForbidDelete = false; } + //UUUU drawinglayer::attribute::SdrAllFillAttributesHelperPtr getSdrAllFillAttributesHelper() const; bool supportsFullDrawingLayerFillAttributeSet() const; diff --git a/sw/source/core/layout/calcmove.cxx b/sw/source/core/layout/calcmove.cxx index d808f5c..2a82263 100644 --- a/sw/source/core/layout/calcmove.cxx +++ b/sw/source/core/layout/calcmove.cxx @@ -1045,6 +1045,7 @@ void SwCntntFrm::MakeAll() return; } + ForbidDelete(); LockJoin(); long nFormatCount = 0; // - loop prevention @@ -1674,6 +1675,7 @@ void SwCntntFrm::MakeAll() delete pSaveFtn; UnlockJoin(); + AllowDelete(); if ( bMovedFwd || bMovedBwd ) pNotify->SetInvaKeep(); // OD 2004-02-26 #i25029# diff --git a/sw/source/core/layout/wsfrm.cxx b/sw/source/core/layout/wsfrm.cxx index 57f81cc..caf63ca 100644 --- a/sw/source/core/layout/wsfrm.cxx +++ b/sw/source/core/layout/wsfrm.cxx @@ -78,6 +78,7 @@ SwFrm::SwFrm( SwModify *pMod, SwFrm* pSib ) : mbValidPos = mbValidPrtArea = mbValidSize = mbValidLineNum = mbRetouche = mbFixSize = mbColLocked = false; mbCompletePaint = mbInfInvalid = true; + mbForbidDelete = false; } const IDocumentDrawModelAccess* SwFrm::getIDocumentDrawModelAccess() diff --git a/sw/source/core/text/frmform.cxx b/sw/source/core/text/frmform.cxx index 3df7347..802a131 100644 --- a/sw/source/core/text/frmform.cxx +++ b/sw/source/core/text/frmform.cxx @@ -561,6 +561,8 @@ void SwTxtFrm::_AdjustFollow( SwTxtFormatter &rLine, OSL_FAIL( "+SwTxtFrm::JoinFrm: Follow is locked." ); return; } + if (GetFollow()->IsDeleteForbidden()) + return; JoinFrm(); }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits