summaryrefslogtreecommitdiff
path: root/src/library/scala/sys/process/ProcessBuilderImpl.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@gmail.com>2016-11-18 09:00:30 +0100
committerGitHub <noreply@github.com>2016-11-18 09:00:30 +0100
commit40f8df19ced57637a795c705080e528d82303248 (patch)
treed791ddfd964b8eea8dfd170f5b86dff9d0e66a49 /src/library/scala/sys/process/ProcessBuilderImpl.scala
parent4fe94a2ded7bf64b3d665e32f95978f5c0927805 (diff)
parentfbcfba212fff76272c509c6781ea2a2897d84bff (diff)
downloadscala-40f8df19ced57637a795c705080e528d82303248.tar.gz
scala-40f8df19ced57637a795c705080e528d82303248.tar.bz2
scala-40f8df19ced57637a795c705080e528d82303248.zip
Merge pull request #5481 from som-snytt/issue/10007-process
SI-10007 sys.process thread sync
Diffstat (limited to 'src/library/scala/sys/process/ProcessBuilderImpl.scala')
-rw-r--r--src/library/scala/sys/process/ProcessBuilderImpl.scala14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/library/scala/sys/process/ProcessBuilderImpl.scala b/src/library/scala/sys/process/ProcessBuilderImpl.scala
index eef140c16a..0df2e648e0 100644
--- a/src/library/scala/sys/process/ProcessBuilderImpl.scala
+++ b/src/library/scala/sys/process/ProcessBuilderImpl.scala
@@ -53,12 +53,14 @@ private[process] trait ProcessBuilderImpl {
override def run(io: ProcessIO): Process = {
val success = new SyncVar[Boolean]
- success put false
- val t = Spawn({
- runImpl(io)
- success.put(true)
- }, io.daemonizeThreads)
-
+ def go(): Unit = {
+ var ok = false
+ try {
+ runImpl(io)
+ ok = true
+ } finally success.put(ok)
+ }
+ val t = Spawn(go(), io.daemonizeThreads)
new ThreadProcess(t, success)
}
}