1
0
mirror of https://github.com/janet-lang/janet synced 2025-04-14 23:03:13 +00:00

Prevent deadline timeout being less than zero

This commit is contained in:
Michael Camilleri 2025-03-25 21:41:59 +09:00
parent 09ac85b1b9
commit a24e5b1eaa
No known key found for this signature in database
GPG Key ID: 7EB218A48DF8B572

View File

@ -662,8 +662,7 @@ static void janet_timeout_cb(JanetEVGenericMessage msg) {
#ifdef JANET_WINDOWS
static DWORD WINAPI janet_timeout_body(LPVOID ptr) {
JanetThreadedTimeout *tto = (JanetThreadedTimeout *)ptr;
double sec = (tto->sec > 0) ? tto->sec : 0;
SleepEx((DWORD)(sec * 1000), TRUE);
SleepEx((DWORD)(tto->sec * 1000), TRUE);
if (janet_fiber_can_resume(tto->fiber)) {
janet_interpreter_interrupt(tto->vm);
JanetEVGenericMessage msg = {0};
@ -3176,6 +3175,7 @@ JANET_CORE_FN(cfun_ev_deadline,
"background thread to try to interrupt the VM if the timeout expires.") {
janet_arity(argc, 1, 4);
double sec = janet_getnumber(argv, 0);
sec = (sec < 0) ? 0 : sec;
JanetFiber *tocancel = janet_optfiber(argv, argc, 1, janet_vm.root_fiber);
JanetFiber *tocheck = janet_optfiber(argv, argc, 2, janet_vm.fiber);
int use_interrupt = janet_optboolean(argv, argc, 3, 0);