diff options
-rw-r--r-- | src/library/scala/collection/immutable/PagedSeq.scala | 4 | ||||
-rw-r--r-- | test/junit/scala/collection/immutable/PagedSeqTest.scala | 6 |
2 files changed, 8 insertions, 2 deletions
diff --git a/src/library/scala/collection/immutable/PagedSeq.scala b/src/library/scala/collection/immutable/PagedSeq.scala index f11217d26a..a86d4b6746 100644 --- a/src/library/scala/collection/immutable/PagedSeq.scala +++ b/src/library/scala/collection/immutable/PagedSeq.scala @@ -190,8 +190,8 @@ extends scala.collection.AbstractSeq[T] val e = if (_end == UndeterminedEnd) _end else start + _end var f = first1 while (f.end <= s && !f.isLast) { - if (f.next eq null) f.addMore(more) - f = f.next + if (f.next eq null) f = f.addMore(more) + else f = f.next } // Warning -- not refining `more` means that slices can freely request and obtain // data outside of their slice. This is part of the design of PagedSeq diff --git a/test/junit/scala/collection/immutable/PagedSeqTest.scala b/test/junit/scala/collection/immutable/PagedSeqTest.scala index 2b576a3655..74f8825307 100644 --- a/test/junit/scala/collection/immutable/PagedSeqTest.scala +++ b/test/junit/scala/collection/immutable/PagedSeqTest.scala @@ -13,6 +13,12 @@ class PagedSeqTest { assertEquals(Seq('a'), PagedSeq.fromStrings(List.fill(5000)("a")).slice(4096, 4097)) } + // should not NPE, and should be empty + @Test + def test_SI9480(): Unit = { + assertEquals(Seq(), PagedSeq.fromStrings(List("a")).slice(1)) + } + // Slices shouldn't read outside where they belong @Test def test_SI6519 { |