aboutsummaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorThiƩbaud Weksteen <tweek@google.com>2021-08-25 11:33:34 +0200
committerThiƩbaud Weksteen <tweek@google.com>2021-08-25 11:33:34 +0200
commitd61267ffdfea9ed9be38e805f8e3ff78e384005f (patch)
tree4b0e62f2e6c5e32ade50e8b362479668db60ff7b /src/runtime
parent642961436a727d51930e5839e3dbfee04ba4af95 (diff)
downloadtokio-d61267ffdfea9ed9be38e805f8e3ff78e384005f.tar.gz
Upgrade tokio to 1.10.1android-s-beta-5android-s-beta-5
Test: m Change-Id: I4ace63dd59e80f258b2aefdc2f34a67fc6ed1bfb
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/task/mod.rs10
-rw-r--r--src/runtime/tests/task.rs6
2 files changed, 14 insertions, 2 deletions
diff --git a/src/runtime/task/mod.rs b/src/runtime/task/mod.rs
index cc3910d..5f0d5ab 100644
--- a/src/runtime/task/mod.rs
+++ b/src/runtime/task/mod.rs
@@ -369,10 +369,16 @@ impl<S: Schedule> UnownedTask<S> {
let raw = self.raw;
mem::forget(self);
- // Poll the task
+ // Transfer one ref-count to a Task object.
+ let task = Task::<S> {
+ raw,
+ _p: PhantomData,
+ };
+
+ // Use the other ref-count to poll the task.
raw.poll();
// Decrement our extra ref-count
- raw.header().state.ref_dec();
+ drop(task);
}
pub(crate) fn shutdown(self) {
diff --git a/src/runtime/tests/task.rs b/src/runtime/tests/task.rs
index e93a1ef..04e1b56 100644
--- a/src/runtime/tests/task.rs
+++ b/src/runtime/tests/task.rs
@@ -112,6 +112,12 @@ fn create_shutdown2() {
}
#[test]
+fn unowned_poll() {
+ let (task, _) = unowned(async {}, NoopSchedule);
+ task.run();
+}
+
+#[test]
fn schedule() {
with(|rt| {
rt.spawn(async {