This commit is contained in:
Nobuyoshi Nakada 2024-05-29 16:25:28 +09:00
Родитель f630b24d7a
Коммит da69c9235f
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 3582D74E1FEE4465
2 изменённых файлов: 3 добавлений и 1 удалений

2
load.c
Просмотреть файл

@ -1284,7 +1284,7 @@ require_internal(rb_execution_context_t *ec, VALUE fname, int exception, bool wa
else { else {
switch (found) { switch (found) {
case 'r': case 'r':
load_iseq_eval(ec, path); load_iseq_eval(saved.ec, path);
break; break;
case 's': case 's':

Просмотреть файл

@ -1790,6 +1790,7 @@ rb_thread_io_blocking_call(rb_blocking_function_t *func, void *data1, int fd, in
{ {
EC_PUSH_TAG(ec); EC_PUSH_TAG(ec);
if ((state = EC_EXEC_TAG()) == TAG_NONE) { if ((state = EC_EXEC_TAG()) == TAG_NONE) {
volatile enum ruby_tag_type saved_state = state; /* for BLOCKING_REGION */
retry: retry:
BLOCKING_REGION(waiting_fd.th, { BLOCKING_REGION(waiting_fd.th, {
val = func(data1); val = func(data1);
@ -1803,6 +1804,7 @@ rb_thread_io_blocking_call(rb_blocking_function_t *func, void *data1, int fd, in
RUBY_VM_CHECK_INTS_BLOCKING(ec); RUBY_VM_CHECK_INTS_BLOCKING(ec);
goto retry; goto retry;
} }
state = saved_state;
} }
EC_POP_TAG(); EC_POP_TAG();