mirror of
https://github.com/janet-lang/janet
synced 2025-11-20 17:24:48 +00:00
Fix resumption values when closing a channel.
When suspended in `ev/give` or `ev/take`, closing the channel should cause the result of `ev/give` or `ev/take` to be `nil`. When suspended in `ev/select`, closing the channel should cause the result of `ev/select` to be `[:close ch]`. The results were flipped before.
This commit is contained in:
@@ -1171,9 +1171,9 @@ JANET_CORE_FN(cfun_channel_close,
|
||||
janet_ev_post_event(vm, janet_thread_chan_cb, msg);
|
||||
} else {
|
||||
if (writer.mode == JANET_CP_MODE_CHOICE_WRITE) {
|
||||
janet_schedule(writer.fiber, janet_wrap_nil());
|
||||
} else {
|
||||
janet_schedule(writer.fiber, make_close_result(channel));
|
||||
} else {
|
||||
janet_schedule(writer.fiber, janet_wrap_nil());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1190,9 +1190,9 @@ JANET_CORE_FN(cfun_channel_close,
|
||||
janet_ev_post_event(vm, janet_thread_chan_cb, msg);
|
||||
} else {
|
||||
if (reader.mode == JANET_CP_MODE_CHOICE_READ) {
|
||||
janet_schedule(reader.fiber, janet_wrap_nil());
|
||||
} else {
|
||||
janet_schedule(reader.fiber, make_close_result(channel));
|
||||
} else {
|
||||
janet_schedule(reader.fiber, janet_wrap_nil());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user