summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2010-09-01 16:01:59 +0000
committerIulian Dragos <jaguarul@gmail.com>2010-09-01 16:01:59 +0000
commit707baf25a295bac11358a5ff935b73cc508c4daa (patch)
tree7f04610d2b2bba0a3f468d25e230e42688d9148c /src
parent8f1a52438a2954c935f59c2e10220beac0e42d03 (diff)
downloadscala-707baf25a295bac11358a5ff935b73cc508c4daa.tar.gz
scala-707baf25a295bac11358a5ff935b73cc508c4daa.tar.bz2
scala-707baf25a295bac11358a5ff935b73cc508c4daa.zip
Closes #1220.
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/collection/immutable/Stream.scala10
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
}
}