diff --git a/src/context/switch.rs b/src/context/switch.rs
index bbdc8ad447d853658f0ec197b662728bb514b89c..60cd46bad6c5904402abf7eb0af87a37b0460881 100644
--- a/src/context/switch.rs
+++ b/src/context/switch.rs
@@ -45,6 +45,7 @@ pub unsafe fn switch() -> bool {
 
                 let current = arch::time::monotonic();
                 if current.0 > wake.0 || (current.0 == wake.0 && current.1 >= wake.1) {
+                    context.wake = None;
                     context.unblock();
                 }
             }
diff --git a/src/sync/wait_condition.rs b/src/sync/wait_condition.rs
index cb170265d8237b5ef845657cf0c1ea1c29187eb6..d48af9d67a250f10c42dcbb2b50db4fe6c86c354 100644
--- a/src/sync/wait_condition.rs
+++ b/src/sync/wait_condition.rs
@@ -12,7 +12,7 @@ pub struct WaitCondition {
 impl WaitCondition {
     pub fn new() -> WaitCondition {
         WaitCondition {
-            contexts: Mutex::new(Vec::with_capacity(16))
+            contexts: Mutex::new(Vec::new())
         }
     }