diff --git a/ChangeLog b/ChangeLog index c65eab8771..d744316b20 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,7 +1,12 @@ +Sun Dec 9 14:59:15 2007 Koichi Sasada + + * eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size. + [ruby-dev:32485] + Sun Dec 9 14:38:25 2007 Koichi Sasada * vm.c (rb_thread_mark): use rb_gc_mark_maybe() for - VM stack specified by mark_stack_len. + VM stack specified by mark_stack_len. [ruby-dev:32462] * insnhelper.ci: clear vm stack extended by opt value. diff --git a/eval_intern.h b/eval_intern.h index e5680a2731..61164de9a9 100644 --- a/eval_intern.h +++ b/eval_intern.h @@ -187,7 +187,7 @@ char *strrchr _((const char *, const char)); } #define CHECK_STACK_OVERFLOW(cfp, margin) do \ - if (((VALUE *)(cfp)->sp) + (margin) >= ((VALUE *)cfp)) { \ + if (((VALUE *)(cfp)->sp) + (margin) + sizeof(rb_control_frame_t) >= ((VALUE *)cfp)) { \ rb_exc_raise(sysstack_error); \ } \ while (0)