sw/source/core/undo/unattr.cxx |    6 ++++++
 1 file changed, 6 insertions(+)

New commits:
commit 4999c99529f1b1543ef110da9e6c0dcbd9f73032
Author:     Michael Stahl <michael.st...@cib.de>
AuthorDate: Tue Jun 25 14:11:46 2019 +0200
Commit:     Michael Stahl <michael.st...@cib.de>
CommitDate: Tue Jun 25 18:30:37 2019 +0200

    tdf#126017 sw: do not restore SwFormatContent in SwUndoFormatAttr
    
    This is a very unusual item that only contains a SwNodeIndex, which may
    "go stale" because the node it's pointing to may be deleted, moving it
    to whatever node may be next.  Restoring such a moved item causes
    crashes like this, where the SwSectionFormat's item does not point to
    its SwSectionNode.
    
    (crash is a regression from 4f0b568ef35353b276ae560fb43502b6f6b2bfdb,
     previously the Undo stack was cleared so you couldn't Undo)
    
    Change-Id: I41a9ed9acc72df5b4b3852875a50e51c29eabe95
    Reviewed-on: https://gerrit.libreoffice.org/74693
    Tested-by: Jenkins
    Reviewed-by: Michael Stahl <michael.st...@cib.de>

diff --git a/sw/source/core/undo/unattr.cxx b/sw/source/core/undo/unattr.cxx
index ff54f61ca06c..e389d4341dab 100644
--- a/sw/source/core/undo/unattr.cxx
+++ b/sw/source/core/undo/unattr.cxx
@@ -128,6 +128,8 @@ SwUndoFormatAttr::SwUndoFormatAttr( const SfxPoolItem& 
rItem, SwFormat& rChgForm
 
 void SwUndoFormatAttr::Init()
 {
+    // tdf#126017 never save SwNodeIndex, it will go stale
+    m_pOldSet->ClearItem(RES_CNTNT);
     // treat change of anchor specially
     if ( SfxItemState::SET == m_pOldSet->GetItemState( RES_ANCHOR, false )) {
         SaveFlyAnchor( m_bSaveDrawPt );
@@ -353,6 +355,10 @@ SwRewriter SwUndoFormatAttr::GetRewriter() const
 
 void SwUndoFormatAttr::PutAttr( const SfxPoolItem& rItem )
 {
+    if (RES_CNTNT == rItem.Which())
+    {
+        return; // tdf#126017 never save SwNodeIndex, it will go stale
+    }
     m_pOldSet->Put( rItem );
     if ( RES_ANCHOR == rItem.Which() ) {
         SaveFlyAnchor( m_bSaveDrawPt );
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to