From 2fb2a7eda85f6cd43ddc9d2a836f1b627014a369 Mon Sep 17 00:00:00 2001 From: Jeong YunWon Date: Wed, 21 Jan 2026 20:44:11 +0900 Subject: [PATCH] winapi.WaitForSingleObject --- crates/vm/src/stdlib/winapi.rs | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/crates/vm/src/stdlib/winapi.rs b/crates/vm/src/stdlib/winapi.rs index 7279f9776..5145989e9 100644 --- a/crates/vm/src/stdlib/winapi.rs +++ b/crates/vm/src/stdlib/winapi.rs @@ -466,7 +466,15 @@ mod _winapi { } #[pyfunction] - fn WaitForSingleObject(h: WinHandle, ms: u32, vm: &VirtualMachine) -> PyResult { + fn WaitForSingleObject(h: WinHandle, ms: i64, vm: &VirtualMachine) -> PyResult { + // Negative values (e.g., -1) map to INFINITE (0xFFFFFFFF) + let ms = if ms < 0 { + windows_sys::Win32::System::Threading::INFINITE + } else if ms > u32::MAX as i64 { + return Err(vm.new_overflow_error("timeout value is too large".to_owned())); + } else { + ms as u32 + }; let ret = unsafe { windows_sys::Win32::System::Threading::WaitForSingleObject(h.0, ms) }; if ret == windows_sys::Win32::Foundation::WAIT_FAILED { Err(vm.new_last_os_error())