Skip to content

Commit e25934f

Browse files
authored
Merge pull request #32451 from stephencelis/patch-1
2 parents 713c836 + e150b37 commit e25934f

File tree

2 files changed

+14
-9
lines changed

2 files changed

+14
-9
lines changed

stdlib/public/core/Collection.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1664,8 +1664,10 @@ extension Collection where SubSequence == Self {
16641664
public mutating func removeFirst(_ k: Int) {
16651665
if k == 0 { return }
16661666
_precondition(k >= 0, "Number of elements to remove should be non-negative")
1667-
_precondition(count >= k,
1668-
"Can't remove more items from a collection than it contains")
1669-
self = self[index(startIndex, offsetBy: k)..<endIndex]
1667+
guard let idx = index(startIndex, offsetBy: k, limitedBy: endIndex) else {
1668+
_preconditionFailure(
1669+
"Can't remove more items from a collection than it contains")
1670+
}
1671+
self = self[idx..<endIndex]
16701672
}
16711673
}

stdlib/public/core/RangeReplaceableCollection.swift

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -590,9 +590,10 @@ extension RangeReplaceableCollection {
590590
public mutating func removeFirst(_ k: Int) {
591591
if k == 0 { return }
592592
_precondition(k >= 0, "Number of elements to remove should be non-negative")
593-
_precondition(count >= k,
594-
"Can't remove more items from a collection than it has")
595-
let end = index(startIndex, offsetBy: k)
593+
guard let end = index(startIndex, offsetBy: k, limitedBy: endIndex) else {
594+
_preconditionFailure(
595+
"Can't remove more items from a collection than it has")
596+
}
596597
removeSubrange(startIndex..<end)
597598
}
598599

@@ -698,9 +699,11 @@ extension RangeReplaceableCollection where SubSequence == Self {
698699
public mutating func removeFirst(_ k: Int) {
699700
if k == 0 { return }
700701
_precondition(k >= 0, "Number of elements to remove should be non-negative")
701-
_precondition(count >= k,
702-
"Can't remove more items from a collection than it contains")
703-
self = self[index(startIndex, offsetBy: k)..<endIndex]
702+
guard let idx = index(startIndex, offsetBy: k, limitedBy: endIndex) else {
703+
_preconditionFailure(
704+
"Can't remove more items from a collection than it contains")
705+
}
706+
self = self[idx..<endIndex]
704707
}
705708
}
706709

0 commit comments

Comments
 (0)