Project

General

Profile

Bug #9110 ยป patch.diff

defer xfree() of end_procs - Glass_saga (Masaki Matsushita), 11/14/2013 01:12 PM

View differences:

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;
}
    (1-1/1)