diff --git a/ChangeLog b/ChangeLog index 80bf52ccf..a78bdfd85 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2025-04-01 Richard Frith-Macdonald + + * Source/NSOrderedSet.m: Fix for git issue #500 + 2025-03-21 Earl Robsham * Headers/Foundation/NSURLHandle.h: * Sources/externs.m: diff --git a/Source/NSOrderedSet.m b/Source/NSOrderedSet.m index 522563e55..fd931ea79 100644 --- a/Source/NSOrderedSet.m +++ b/Source/NSOrderedSet.m @@ -1415,12 +1415,12 @@ static SEL remSel; if (count > 0) { - NSUInteger i; IMP rem = [self methodForSelector: remSel]; - for (i = 0; i < count; i++) + while (count-- > 0) { - NSUInteger idx = indexArray[i]; + NSUInteger idx = indexArray[count]; + (*rem)(self, remSel, idx); } } diff --git a/Tests/base/NSOrderedSet/basic.m b/Tests/base/NSOrderedSet/basic.m index f88d44672..fb9a0d467 100644 --- a/Tests/base/NSOrderedSet/basic.m +++ b/Tests/base/NSOrderedSet/basic.m @@ -361,6 +361,17 @@ int main() [uobj containsObject: @"Now"]), "Object unarchives correctly from macOS archive") + [array removeAllObjects]; + [array addObject: @"1"]; + [array addObject: @"2"]; + [array addObject: @"3"]; + [array addObject: @"4"]; + [array addObject: @"5"]; + + NSMutableOrderedSet *ms = [NSMutableOrderedSet orderedSetWithArray: array]; + [ms removeObjectsAtIndexes: + [NSIndexSet indexSetWithIndexesInRange: NSMakeRange(0, [array count])]]; + test_NSObject(@"NSOrderedSet", testObjs); test_NSCoding(testObjs); test_NSCopying(@"NSOrderedSet", @"NSMutableOrderedSet", testObjs, YES, NO);