Bug #9110 ยป patch.diff
eval_jump.c | ||
---|---|---|
rb_thread_t *th = GET_THREAD();
|
||
volatile VALUE errinfo = th->errinfo;
|
||
while (ephemeral_end_procs) {
|
||
link = ephemeral_end_procs;
|
||
ephemeral_end_procs = link->next;
|
||
link = ephemeral_end_procs;
|
||
while (link) {
|
||
PUSH_TAG();
|
||
if ((status = EXEC_TAG()) == 0) {
|
||
rb_set_safe_level_force(link->safe);
|
||
... | ... | |
error_handle(status);
|
||
if (!NIL_P(th->errinfo)) errinfo = th->errinfo;
|
||
}
|
||
xfree(link);
|
||
link = link->next;
|
||
}
|
||
while (end_procs) {
|
||
link = end_procs;
|
||
end_procs = link->next;
|
||
link = end_procs;
|
||
while (link) {
|
||
PUSH_TAG();
|
||
if ((status = EXEC_TAG()) == 0) {
|
||
rb_set_safe_level_force(link->safe);
|
||
... | ... | |
error_handle(status);
|
||
if (!NIL_P(th->errinfo)) errinfo = th->errinfo;
|
||
}
|
||
link = link->next;
|
||
}
|
||
link = ephemeral_end_procs;
|
||
while (link) {
|
||
xfree(link);
|
||
link = link->next;
|
||
}
|
||
link = end_procs;
|
||
while (link) {
|
||
xfree(link);
|
||
link = link->next;
|
||
}
|
||
rb_set_safe_level_force(safe);
|
||
th->errinfo = errinfo;
|
||
}
|