Skip to content

Commit e150b37

Browse files
committed
Others
1 parent 3b8d8b7 commit e150b37

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

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)