From 2c53bebe56d584f1d6b710e9b39df6452d655a26 Mon Sep 17 00:00:00 2001 From: John-John Tedro Date: Wed, 29 Apr 2020 17:24:55 +0200 Subject: [PATCH] runtime: mem::forget instead of keeping track of dropped state (#2451) --- tokio/src/runtime/task/harness.rs | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/tokio/src/runtime/task/harness.rs b/tokio/src/runtime/task/harness.rs index a2488aa2e..e86b29e69 100644 --- a/tokio/src/runtime/task/harness.rs +++ b/tokio/src/runtime/task/harness.rs @@ -89,21 +89,15 @@ where let res = panic::catch_unwind(panic::AssertUnwindSafe(|| { struct Guard<'a, T: Future, S: Schedule> { core: &'a Core, - polled: bool, } impl Drop for Guard<'_, T, S> { fn drop(&mut self) { - if !self.polled { - self.core.drop_future_or_output(); - } + self.core.drop_future_or_output(); } } - let mut guard = Guard { - core: self.core(), - polled: false, - }; + let guard = Guard { core: self.core() }; // If the task is cancelled, avoid polling it, instead signalling it // is complete. @@ -113,7 +107,7 @@ where let res = guard.core.poll(self.header()); // prevent the guard from dropping the future - guard.polled = true; + mem::forget(guard); res.map(Ok) }