diff options
Diffstat (limited to 'tokio/src/runtime/task/stack.rs')
-rw-r--r-- | tokio/src/runtime/task/stack.rs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/tokio/src/runtime/task/stack.rs b/tokio/src/runtime/task/stack.rs index b2d50baf..9dd8d3f4 100644 --- a/tokio/src/runtime/task/stack.rs +++ b/tokio/src/runtime/task/stack.rs @@ -31,8 +31,10 @@ impl<T: 'static> TransferStack<T> { loop { unsafe { - *task.as_ref().stack_next.get() = NonNull::new(curr); - } + task.as_ref() + .stack_next + .with_mut(|ptr| *ptr = NonNull::new(curr)) + }; let res = self .head @@ -57,7 +59,7 @@ impl<T: 'static> TransferStack<T> { let task = self.0?; // Move the cursor forward - self.0 = unsafe { *task.as_ref().stack_next.get() }; + self.0 = unsafe { task.as_ref().stack_next.with(|ptr| *ptr) }; // Return the task unsafe { Some(Task::from_raw(task)) } |