From 4ceae56b24d298ada9ec8d3b58e6a431f91ca45b Mon Sep 17 00:00:00 2001 From: rfm Date: Wed, 8 Nov 2006 18:16:11 +0000 Subject: [PATCH] Fix for case when adding a range entirely withn an existing range git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@24053 72102866-910b-0410-8b05-ffd578937521 --- ChangeLog | 5 +++++ Source/NSIndexSet.m | 13 ++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) 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); + } } /*