Fixed: CPRange was not copied before altering its content

This commit is contained in:
daboe01
2016-09-02 19:50:57 +02:00
parent f70d3359c4
commit 6076bbb554
+9 -7
View File
@@ -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);
}
}