diff --git a/ChangeLog b/ChangeLog index fae8a27db..d4cdc5025 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2006-11-08 Richard Frith-Macdonald + + Source/NSIndexSet.m: ([addIndexesInRange:]) + Fix for case when added range lies within existing range. + 2006-11-08 Richard Frith-Macdonald * Source/Additions/GSXML.m: ([stringByEscapingXML]) Fix bug causing diff --git a/Source/NSIndexSet.m b/Source/NSIndexSet.m index d6864d540..8617b0fd1 100644 --- a/Source/NSIndexSet.m +++ b/Source/NSIndexSet.m @@ -673,9 +673,16 @@ static unsigned posForIndex(GSIArray array, unsigned index) { break; } - r.length += (NSMaxRange(aRange) - NSMaxRange(r)); - GSIArrayRemoveItemAtIndex(_array, pos--); - GSIArraySetItemAtIndex(_array, (GSIArrayItem)r, pos); + if (NSMaxRange(r) >= NSMaxRange(aRange)) + { + GSIArrayRemoveItemAtIndex(_array, pos--); + } + else + { + r.length += (NSMaxRange(aRange) - NSMaxRange(r)); + GSIArrayRemoveItemAtIndex(_array, pos--); + GSIArraySetItemAtIndex(_array, (GSIArrayItem)r, pos); + } } /*