From 11003123545c8a8e2ca0cd256a184866b68c8d76 Mon Sep 17 00:00:00 2001 From: Ihor Andrianov Date: Wed, 9 Jul 2025 17:16:22 +0300 Subject: [PATCH] use removed cb to complete copletion --- core/io/unix.rs | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/core/io/unix.rs b/core/io/unix.rs index 28cba01ba..4066f5cf2 100644 --- a/core/io/unix.rs +++ b/core/io/unix.rs @@ -258,14 +258,22 @@ impl IO for UnixIO { }; match result { Ok(n) => { - self.callbacks.remove(event.key); - match &cf { - CompletionCallback::Read(_, ref c, _) => c.complete(0), - CompletionCallback::Write(_, ref c, _, _) => c.complete(n as i32), + let cf = self + .callbacks + .remove(event.key) + .expect("callback should exist"); + match cf { + CompletionCallback::Read(_, c, _) => c.complete(0), + CompletionCallback::Write(_, c, _, _) => c.complete(n as i32), } } - Err(Errno::AGAIN) => {} - Err(e) => return Err(e.into()), + Err(Errno::AGAIN) => (), + Err(e) => { + self.callbacks.remove(event.key); + + trace!("run_once() error: {}", e); + return Err(e.into()); + } } } }