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;
|
||
|
}
|
||