Skip to content

Commit 45e6d99

Browse files
authored
Merge pull request #3153 from apple/indexpath-slice-crash
Fix IndexPath slicing crash
2 parents d956aff + b8f082a commit 45e6d99

File tree

2 files changed

+11
-2
lines changed

2 files changed

+11
-2
lines changed

Sources/Foundation/IndexPath.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -261,9 +261,9 @@ public struct IndexPath : ReferenceConvertible, Equatable, Hashable, MutableColl
261261
case 0:
262262
return .empty
263263
case 1:
264-
return .single(slice[0])
264+
return .single(slice.first!)
265265
case 2:
266-
return .pair(slice[0], slice[1])
266+
return .pair(slice.first!, slice.last!)
267267
default:
268268
return .array(Array<Int>(slice))
269269
}

Tests/Foundation/Tests/TestIndexPath.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,6 +287,15 @@ class TestIndexPath: XCTestCase {
287287
XCTAssertEqual(ip4.count, 2)
288288
XCTAssertEqual(ip4[0], 2)
289289
XCTAssertEqual(ip4[1], 3)
290+
291+
let ip5 = ip3[1...]
292+
XCTAssertEqual(ip5.count, 2)
293+
XCTAssertEqual(ip5[0], 3)
294+
XCTAssertEqual(ip5[1], 4)
295+
296+
let ip6 = ip3[2...]
297+
XCTAssertEqual(ip6.count, 1)
298+
XCTAssertEqual(ip6[0], 4)
290299
}
291300

292301
func testAppending() {

0 commit comments

Comments
 (0)