From d702cbcf9aa97f3254b346dcd8a9f259c5634cbe Mon Sep 17 00:00:00 2001 From: sxyazi Date: Fri, 8 Sep 2023 06:39:35 +0800 Subject: [PATCH] fix: doesn't unlock before the task cancellation --- core/src/tasks/tasks.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/core/src/tasks/tasks.rs b/core/src/tasks/tasks.rs index 8614087a..697c749e 100644 --- a/core/src/tasks/tasks.rs +++ b/core/src/tasks/tasks.rs @@ -121,12 +121,13 @@ impl Tasks { } pub fn cancel(&mut self) -> bool { - let running = self.scheduler.running.read(); - if !running.get_id(self.cursor).map(|id| self.scheduler.cancel(id)).unwrap_or(false) { + let id = self.scheduler.running.read().get_id(self.cursor); + if id.map(|id| self.scheduler.cancel(id)) != Some(true) { return false; } - self.cursor = self.cursor.min(running.len().saturating_sub(1)); + let len = self.scheduler.running.read().len(); + self.cursor = self.cursor.min(len.saturating_sub(1)); true }