diff options
| author | Brian Anderson <banderson@mozilla.com> | 2013-05-02 20:51:56 -0700 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2013-05-02 20:51:56 -0700 |
| commit | 6c478c7de889ec4943b9dcdcbfbb8a8244f479cc (patch) | |
| tree | 7f9fd01150a7611007255cbb2e45cf41e0cd4989 /src/libcore/task/mod.rs | |
| parent | baa1c1834f608c8c789db6d2495626ff9d28dd96 (diff) | |
| parent | f8dffc6789113a10c9dbf1d815c3569b19b53e96 (diff) | |
| download | rust-6c478c7de889ec4943b9dcdcbfbb8a8244f479cc.tar.gz rust-6c478c7de889ec4943b9dcdcbfbb8a8244f479cc.zip | |
Merge remote-tracking branch 'brson/io' into incoming
Conflicts: mk/rt.mk src/libcore/run.rs
Diffstat (limited to 'src/libcore/task/mod.rs')
| -rw-r--r-- | src/libcore/task/mod.rs | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/src/libcore/task/mod.rs b/src/libcore/task/mod.rs index 0e97c101dc6..ebf2494c8ee 100644 --- a/src/libcore/task/mod.rs +++ b/src/libcore/task/mod.rs @@ -559,8 +559,31 @@ pub fn yield() { pub fn failing() -> bool { //! True if the running task has failed - unsafe { - rt::rust_task_is_unwinding(rt::rust_get_task()) + use rt::{context, OldTaskContext}; + use rt::local_services::borrow_local_services; + + match context() { + OldTaskContext => { + unsafe { + rt::rust_task_is_unwinding(rt::rust_get_task()) + } + } + _ => { + let mut unwinding = false; + do borrow_local_services |local| { + unwinding = match local.unwinder { + Some(unwinder) => { + unwinder.unwinding + } + None => { + // Because there is no unwinder we can't be unwinding. + // (The process will abort on failure) + false + } + } + } + return unwinding; + } } } @@ -1194,7 +1217,7 @@ fn test_spawn_thread_on_demand() { #[test] fn test_simple_newsched_spawn() { - use rt::run_in_newsched_task; + use rt::test::run_in_newsched_task; do run_in_newsched_task { spawn(||()) |
