From 6076bbb554e5d1c58f8592070107aea2d81d7ede Mon Sep 17 00:00:00 2001 From: daboe01 Date: Fri, 2 Sep 2016 19:50:57 +0200 Subject: [PATCH] Fixed: CPRange was not copied before altering its content --- AppKit/CPTextView/CPTextStorage.j | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/AppKit/CPTextView/CPTextStorage.j b/AppKit/CPTextView/CPTextStorage.j index 229610dc6..65a71cf1a 100644 --- a/AppKit/CPTextView/CPTextStorage.j +++ b/AppKit/CPTextView/CPTextStorage.j @@ -186,24 +186,26 @@ var CPTextStorageDelegate_textStorageWillProcessEditing_ = 1 << 1, - (void)edited:(unsigned)editedMask range:(CPRange)aRange changeInLength:(int)lengthChange { - if (_editCount == 0) /* used outside a beginEditing/endEditing */ + var copyRange = CPMakeRangeCopy(aRange); + + if (_editCount == 0) // used outside a beginEditing/endEditing { _editedMask = editedMask; _changeInLength = lengthChange; - aRange.length += lengthChange; - _editedRange = aRange; + copyRange.length += lengthChange; + _editedRange = copyRange; [self processEditing]; } else { _editedMask |= editedMask; _changeInLength += lengthChange; - aRange.length += lengthChange; + copyRange.length += lengthChange; - if (_editedRange.location === CPNotFound) - _editedRange = aRange; + if (_editedRange.location == CPNotFound) + _editedRange = copyRange; else - _editedRange = CPUnionRange(_editedRange,aRange); + _editedRange = CPUnionRange(_editedRange,copyRange); } }