diff options
| author | Ben Blum <bblum@andrew.cmu.edu> | 2013-07-15 15:32:35 -0400 |
|---|---|---|
| committer | Ben Blum <bblum@andrew.cmu.edu> | 2013-07-20 05:12:03 -0400 |
| commit | f3c79c4026740ea2db0065ae14339d6586918a47 (patch) | |
| tree | b71929511705f081670ef69c4a15c4e9e24c6a23 /src/libstd/rt | |
| parent | 0e1be5ff9e82a46a3fd137954f62b4fa7cdbe5aa (diff) | |
| download | rust-f3c79c4026740ea2db0065ae14339d6586918a47.tar.gz rust-f3c79c4026740ea2db0065ae14339d6586918a47.zip | |
Enable taskgroup code for newsched spawns.
Diffstat (limited to 'src/libstd/rt')
| -rw-r--r-- | src/libstd/rt/comm.rs | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/libstd/rt/comm.rs b/src/libstd/rt/comm.rs index 46c99d21d9d..f098f8b2767 100644 --- a/src/libstd/rt/comm.rs +++ b/src/libstd/rt/comm.rs @@ -286,8 +286,14 @@ impl<T> Drop for PortOneHack<T> { STATE_ONE => { let _packet: ~Packet<T> = cast::transmute(this.void_packet); } - _ => { - util::unreachable() + task_as_state => { + // This case occurs during unwinding, when the blocked + // receiver was killed awake. The task can't still be + // blocked (we are it), but we need to free the handle. + let recvr = BlockedTask::cast_from_uint(task_as_state); + // FIXME(#7554)(bblum): Make this cfg(test) dependent. + // in a later commit. + assert!(recvr.wake().is_none()); } } } |
