diff options
| author | Eric Holk <eric.holk@gmail.com> | 2012-08-03 18:57:43 -0700 |
|---|---|---|
| committer | Eric Holk <eric.holk@gmail.com> | 2012-08-06 09:10:19 -0700 |
| commit | 9f287c211eb3a92ae3aa31b6f767bb9998f2f147 (patch) | |
| tree | 49a88b8e24ed1668f81292e1b6dcb9fec6202409 /src/compiletest | |
| parent | 86947e47ad057d50209cf8a022f088c22089433f (diff) | |
| download | rust-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.rs | 5 | ||||
| -rw-r--r-- | src/compiletest/procsrv.rs | 27 |
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; }; |
