From 79629daff44dee0a2646d169535cf0eac83b8aae Mon Sep 17 00:00:00 2001 From: PThorpe92 Date: Sat, 2 Aug 2025 21:48:39 -0400 Subject: [PATCH] Make completions idempotent --- core/io/mod.rs | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/core/io/mod.rs b/core/io/mod.rs index a822cf832..3eaa65ccc 100644 --- a/core/io/mod.rs +++ b/core/io/mod.rs @@ -176,13 +176,15 @@ impl Completion { } pub fn complete(&self, result: i32) { - match &self.inner.completion_type { - CompletionType::Read(r) => r.complete(result), - CompletionType::Write(w) => w.complete(result), - CompletionType::Sync(s) => s.complete(result), // fix - CompletionType::Truncate(t) => t.complete(result), - }; - self.inner.is_completed.set(true); + if !self.inner.is_completed.get() { + match &self.inner.completion_type { + CompletionType::Read(r) => r.complete(result), + CompletionType::Write(w) => w.complete(result), + CompletionType::Sync(s) => s.complete(result), // fix + CompletionType::Truncate(t) => t.complete(result), + }; + self.inner.is_completed.set(true); + } } /// only call this method if you are sure that the completion is