Skip to content

Commit eac37ab

Browse files
committed
Avoid leaking memory used for JanetThreadedTimeout struct
1 parent a24e5b1 commit eac37ab

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

src/core/ev.c

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -661,28 +661,30 @@ static void janet_timeout_cb(JanetEVGenericMessage msg) {
661661

662662
#ifdef JANET_WINDOWS
663663
static DWORD WINAPI janet_timeout_body(LPVOID ptr) {
664-
JanetThreadedTimeout *tto = (JanetThreadedTimeout *)ptr;
665-
SleepEx((DWORD)(tto->sec * 1000), TRUE);
666-
if (janet_fiber_can_resume(tto->fiber)) {
667-
janet_interpreter_interrupt(tto->vm);
664+
JanetThreadedTimeout tto = *(JanetThreadedTimeout *)ptr;
665+
janet_free(ptr);
666+
SleepEx((DWORD)(tto.sec * 1000), TRUE);
667+
if (janet_fiber_can_resume(tto.fiber)) {
668+
janet_interpreter_interrupt(tto.vm);
668669
JanetEVGenericMessage msg = {0};
669-
janet_ev_post_event(tto->vm, janet_timeout_cb, msg);
670+
janet_ev_post_event(tto.vm, janet_timeout_cb, msg);
670671
}
671672
return 0;
672673
}
673674
#else
674675
static void *janet_timeout_body(void *ptr) {
675-
JanetThreadedTimeout *tto = (JanetThreadedTimeout *)ptr;
676+
JanetThreadedTimeout tto = *(JanetThreadedTimeout *)ptr;
677+
janet_free(ptr);
676678
struct timespec ts;
677-
ts.tv_sec = (time_t) tto->sec;
678-
ts.tv_nsec = (tto->sec <= UINT32_MAX)
679-
? (long)((tto->sec - ((uint32_t)tto->sec)) * 1000000000)
679+
ts.tv_sec = (time_t) tto.sec;
680+
ts.tv_nsec = (tto.sec <= UINT32_MAX)
681+
? (long)((tto.sec - ((uint32_t)tto.sec)) * 1000000000)
680682
: 0;
681683
nanosleep(&ts, &ts);
682-
if (janet_fiber_can_resume(tto->fiber)) {
683-
janet_interpreter_interrupt(tto->vm);
684+
if (janet_fiber_can_resume(tto.fiber)) {
685+
janet_interpreter_interrupt(tto.vm);
684686
JanetEVGenericMessage msg = {0};
685-
janet_ev_post_event(tto->vm, janet_timeout_cb, msg);
687+
janet_ev_post_event(tto.vm, janet_timeout_cb, msg);
686688
}
687689
return NULL;
688690
}

0 commit comments

Comments
 (0)