diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2010-09-01 16:01:59 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2010-09-01 16:01:59 +0000 |
commit | 707baf25a295bac11358a5ff935b73cc508c4daa (patch) | |
tree | 7f04610d2b2bba0a3f468d25e230e42688d9148c /src/library | |
parent | 8f1a52438a2954c935f59c2e10220beac0e42d03 (diff) | |
download | scala-707baf25a295bac11358a5ff935b73cc508c4daa.tar.gz scala-707baf25a295bac11358a5ff935b73cc508c4daa.tar.bz2 scala-707baf25a295bac11358a5ff935b73cc508c4daa.zip |
Closes #1220.
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/collection/immutable/Stream.scala | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/library/scala/collection/immutable/Stream.scala b/src/library/scala/collection/immutable/Stream.scala index 5475c59809..cf9a48983a 100644 --- a/src/library/scala/collection/immutable/Stream.scala +++ b/src/library/scala/collection/immutable/Stream.scala @@ -565,10 +565,14 @@ object Stream extends SeqFactory[Stream] { final class Cons[+A](hd: A, tl: => Stream[A]) extends Stream[A] { override def isEmpty = false override def head = hd - private[this] var tlVal: Stream[A] = _ - def tailDefined = tlVal ne null + @volatile private[this] var tlVal: Stream[A] = _ + def tailDefined: Boolean = tlVal ne null override def tail: Stream[A] = { - if (!tailDefined) { tlVal = tl } + if (!tailDefined) + synchronized { + if (!tailDefined) tlVal = tl + } + tlVal } } |