summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2014-12-01 12:58:47 +0100
committerLuboš Luňák <l.lunak@collabora.com>2014-12-11 14:12:08 +0100
commit759658efd1c68fe919d33528497ecb6725343057 (patch)
treea09981c07bd7968e6491776f49b9bd70a3d43df6
parent7e5877a5cd0e48ce3aa364788c6faf81fbce7338 (diff)
do not save UNO marks in undo history
These are usually very short-lived marks that are used for various internal purposes or by UNO interfaces, so restoring them from undo history does not make any sense. It can in fact lead to a crash on undo if the mark has been already deleted (which is usually the case with UNO marks) but the restoring still refers to it (this is not a problem with other mark types since those should be deleted only when they are no longer in the document, in which case they are saved in undo history by content positions rather than mark references). Change-Id: Id707dc3d2b888b5c96a974d04a0ef17b22fc024c
-rw-r--r--sw/source/core/undo/undobj.cxx10
1 files changed, 6 insertions, 4 deletions
diff --git a/sw/source/core/undo/undobj.cxx b/sw/source/core/undo/undobj.cxx
index f552dc90fd66..afa472c11a1b 100644
--- a/sw/source/core/undo/undobj.cxx
+++ b/sw/source/core/undo/undobj.cxx
@@ -784,10 +784,12 @@ void SwUndoSaveCntnt::DelCntntIndex( const SwPosition& rMark,
if ( bSavePos || bSaveOtherPos )
{
- if( !pHistory )
- pHistory = new SwHistory;
-
- pHistory->Add( *pBkmk, bSavePos, bSaveOtherPos );
+ if( IDocumentMarkAccess::GetType(*pBkmk) != IDocumentMarkAccess::UNO_BOOKMARK )
+ {
+ if( !pHistory )
+ pHistory = new SwHistory;
+ pHistory->Add( *pBkmk, bSavePos, bSaveOtherPos );
+ }
if ( bSavePos
&& ( bSaveOtherPos
|| !pBkmk->IsExpanded() ) )