about summary refs log tree commit diff
path: root/src/compiletest
diff options
context:
space:
mode:
authorEric Holk <eric.holk@gmail.com>2012-08-03 18:57:43 -0700
committerEric Holk <eric.holk@gmail.com>2012-08-06 09:10:19 -0700
commit9f287c211eb3a92ae3aa31b6f767bb9998f2f147 (patch)
tree49a88b8e24ed1668f81292e1b6dcb9fec6202409 /src/compiletest
parent86947e47ad057d50209cf8a022f088c22089433f (diff)
downloadrust-9f287c211eb3a92ae3aa31b6f767bb9998f2f147.tar.gz
rust-9f287c211eb3a92ae3aa31b6f767bb9998f2f147.zip
Refcount tasks in packets to avoid races.
Revert "Once again, revert "Use pipes in compiletest""

Fixes #3098
Diffstat (limited to 'src/compiletest')
-rw-r--r--src/compiletest/compiletest.rs5
-rw-r--r--src/compiletest/procsrv.rs27
2 files changed, 15 insertions, 17 deletions
diff --git a/src/compiletest/compiletest.rs b/src/compiletest/compiletest.rs
index 39c4f0f81d0..33b9655aeb2 100644
--- a/src/compiletest/compiletest.rs
+++ b/src/compiletest/compiletest.rs
@@ -8,11 +8,6 @@ import task;
 import core::result;
 import result::{ok, err};
 
-import comm::port;
-import comm::chan;
-import comm::send;
-import comm::recv;
-
 import common::config;
 import common::mode_run_pass;
 import common::mode_run_fail;
diff --git a/src/compiletest/procsrv.rs b/src/compiletest/procsrv.rs
index bb9080becff..99b18a67e1e 100644
--- a/src/compiletest/procsrv.rs
+++ b/src/compiletest/procsrv.rs
@@ -2,6 +2,8 @@ import run::spawn_process;
 import io::{writer_util, reader_util};
 import libc::{c_int, pid_t};
 
+import pipes::chan;
+
 export run;
 
 #[cfg(target_os = "win32")]
@@ -58,29 +60,30 @@ fn run(lib_path: ~str,
 
 
     writeclose(pipe_in.out, input);
-    let p = comm::port();
-    let ch = comm::chan(p);
+    let p = pipes::port_set();
+    let ch = p.chan();
     do task::spawn_sched(task::single_threaded) {
         let errput = readclose(pipe_err.in);
-        comm::send(ch, (2, errput));
+        ch.send((2, errput));
     }
+    let ch = p.chan();
     do task::spawn_sched(task::single_threaded) {
         let output = readclose(pipe_out.in);
-        comm::send(ch, (1, output));
+        ch.send((1, output));
     }
     let status = run::waitpid(pid);
     let mut errs = ~"";
     let mut outs = ~"";
     let mut count = 2;
     while count > 0 {
-        let stream = comm::recv(p);
-        alt check stream {
-            (1, s) => {
-                outs = s;
-            }
-            (2, s) => {
-                errs = s;
-            }
+        alt p.recv() {
+          (1, s) => {
+            outs = s;
+          }
+          (2, s) => {
+            errs = s;
+          }
+          _ { fail }
         };
         count -= 1;
     };