1
0
mirror of https://github.com/janet-lang/janet synced 2024-12-26 16:30:26 +00:00

Fixed janet_loop1_impl stream use after dealloc

This commit is contained in:
Ico Doornekamp 2023-05-19 20:00:59 +02:00
parent c3e28bc924
commit 89debac8f6

View File

@ -1969,6 +1969,7 @@ void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
JanetAsyncStatus status3 = JANET_ASYNC_STATUS_NOT_DONE; JanetAsyncStatus status3 = JANET_ASYNC_STATUS_NOT_DONE;
JanetAsyncStatus status4 = JANET_ASYNC_STATUS_NOT_DONE; JanetAsyncStatus status4 = JANET_ASYNC_STATUS_NOT_DONE;
state->event = pfd; state->event = pfd;
JanetStream *stream = state->stream;
if (mask & POLLOUT) if (mask & POLLOUT)
status1 = state->machine(state, JANET_ASYNC_EVENT_WRITE); status1 = state->machine(state, JANET_ASYNC_EVENT_WRITE);
if (mask & POLLIN) if (mask & POLLIN)
@ -1983,7 +1984,6 @@ void janet_loop1_impl(int has_timeout, JanetTimestamp timeout) {
status4 == JANET_ASYNC_STATUS_DONE) status4 == JANET_ASYNC_STATUS_DONE)
janet_unlisten(state, 0); janet_unlisten(state, 0);
/* Close the stream if requested and no more listeners are left */ /* Close the stream if requested and no more listeners are left */
JanetStream *stream = state->stream;
if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->state) { if ((stream->flags & JANET_STREAM_TOCLOSE) && !stream->state) {
janet_stream_close(stream); janet_stream_close(stream);
} }