Skip to content

Commit ca85886

Browse files
committed
Merge pull request scala#3450 from Ichoran/issue/7266
SI-7266 Stream leaks memory
2 parents 5b4a71e + f84acc9 commit ca85886

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/library/scala/collection/immutable/Stream.scala

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1108,11 +1108,15 @@ object Stream extends SeqFactory[Stream] {
11081108
override def isEmpty = false
11091109
override def head = hd
11101110
@volatile private[this] var tlVal: Stream[A] = _
1111-
def tailDefined: Boolean = tlVal ne null
1111+
@volatile private[this] var tlGen = tl _
1112+
def tailDefined: Boolean = tlGen eq null
11121113
override def tail: Stream[A] = {
11131114
if (!tailDefined)
11141115
synchronized {
1115-
if (!tailDefined) tlVal = tl
1116+
if (!tailDefined) {
1117+
tlVal = tlGen()
1118+
tlGen = null
1119+
}
11161120
}
11171121

11181122
tlVal

0 commit comments

Comments
 (0)