diff --git a/src/librustuv/idle.rs b/src/librustuv/idle.rs index 30e02b168ca57e8af4e7f5da7453cd6e3dc81d42..46de70c1746e7024d27ac6d99003a1c89c8729db 100644 --- a/src/librustuv/idle.rs +++ b/src/librustuv/idle.rs @@ -117,7 +117,10 @@ fn call(&mut self) { match *slot.get() { (ref mut task, ref mut val) => { *val = n; - task.take_unwrap() + match task.take() { + Some(t) => t, + None => return + } } } } diff --git a/src/test/compile-fail/issue-8727.rs b/src/test/compile-fail/issue-8727.rs index 7088c4df6b7fce0e38421f15fec04e8bdbad8945..003f1d67cdb8a4d418baea92883dc1e028c0ed6b 100644 --- a/src/test/compile-fail/issue-8727.rs +++ b/src/test/compile-fail/issue-8727.rs @@ -14,7 +14,11 @@ struct Data(~Option); -fn generic( _ : ~[(Data,T)] ) {let rec : ~[(Data,(bool,T))] = ~[]; generic( rec ); } //~ ERROR overly deep expansion of inlined function +fn generic( _ : ~[(Data,T)] ) { + //~^ ERROR overly deep expansion of inlined function + let rec : ~[(Data,(bool,T))] = ~[]; + generic( rec ); +} fn main () { diff --git a/src/test/run-pass/issue-8860.rs b/src/test/run-pass/issue-8860.rs index e7d2a2739397a264efa05053984db905b28686a5..230dce1615158544dbf8b08ff51bf798e50e35d7 100644 --- a/src/test/run-pass/issue-8860.rs +++ b/src/test/run-pass/issue-8860.rs @@ -8,6 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// ignore-fast + extern mod green; static mut DROP: int = 0i;