summaryrefslogtreecommitdiff
path: root/src/library
diff options
context:
space:
mode:
authorGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-02-02 09:26:08 -0800
committerGrzegorz Kossakowski <grzegorz.kossakowski@gmail.com>2014-02-02 09:26:08 -0800
commitca85886eb1b4a6b5b8df3c26d49933e13c57f730 (patch)
treef4a916a6d974c259d6c2112bfad81ed7e3d75f75 /src/library
parent5b4a71eda1df7d914da8d65cfa750bb5e408ca84 (diff)
parentf84acc99cd46e43f0ce6c466534882390459d9b5 (diff)
downloadscala-ca85886eb1b4a6b5b8df3c26d49933e13c57f730.tar.gz
scala-ca85886eb1b4a6b5b8df3c26d49933e13c57f730.tar.bz2
scala-ca85886eb1b4a6b5b8df3c26d49933e13c57f730.zip
Merge pull request #3450 from Ichoran/issue/7266
SI-7266 Stream leaks memory
Diffstat (limited to 'src/library')
-rw-r--r--src/library/scala/collection/immutable/Stream.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala
index 49c3b4c3cd..60de147477 100644
--- a/src/library/scala/collection/immutable/Stream.scala
+++ b/src/library/scala/collection/immutable/Stream.scala
@@ -1108,11 +1108,15 @@ object Stream extends SeqFactory[Stream] {
override def isEmpty = false
override def head = hd
@volatile private[this] var tlVal: Stream[A] = _
- def tailDefined: Boolean = tlVal ne null
+ @volatile private[this] var tlGen = tl _
+ def tailDefined: Boolean = tlGen eq null
override def tail: Stream[A] = {
if (!tailDefined)
synchronized {
- if (!tailDefined) tlVal = tl
+ if (!tailDefined) {
+ tlVal = tlGen()
+ tlGen = null
+ }
}
tlVal