diff options
| author | bors <bors@rust-lang.org> | 2014-08-09 16:16:23 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-08-09 16:16:23 +0000 |
| commit | beda30e7ae2201f90b65c385188a76efa4260c8d (patch) | |
| tree | a1ae49936469dceba975dee13b7323b0a74ab9a2 /src | |
| parent | f9a4323c08cecba589bfcd371a3655ec47412e34 (diff) | |
| parent | d9038fc3b3222c678bdf2d06b896322976eaacf5 (diff) | |
| download | rust-beda30e7ae2201f90b65c385188a76efa4260c8d.tar.gz rust-beda30e7ae2201f90b65c385188a76efa4260c8d.zip | |
auto merge of #16342 : alexcrichton/rust/issue-16341, r=huonw
Now that rustdoc is spawning a child task, the program won't exit with a default error code if the main task fails (because it never fails). This commit forces the main task to wait for a child task in order to correctly propagate failure. Closes #16341
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustdoc/lib.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/librustdoc/lib.rs b/src/librustdoc/lib.rs index fb974403858..6c254b62177 100644 --- a/src/librustdoc/lib.rs +++ b/src/librustdoc/lib.rs @@ -120,9 +120,16 @@ pub fn main() { // So, in summary, it is unknown why this is necessary, what it is // preventing, or what the actual bug is. In the meantime, this allows // --test to work on windows, which seems good, right? Fun times. + let (tx, rx) = channel(); spawn(proc() { std::os::set_exit_status(main_args(std::os::args().as_slice())); + tx.send(()); }); + + // If the task failed, set an error'd exit status + if rx.recv_opt().is_err() { + std::os::set_exit_status(std::rt::DEFAULT_ERROR_CODE); + } } pub fn opts() -> Vec<getopts::OptGroup> { |
