From ab87d09068d0185d7fa93bdcdff2127fe60ce421 Mon Sep 17 00:00:00 2001 From: ko1 Date: Sun, 9 Dec 2007 06:00:56 +0000 Subject: * eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size. [ruby-dev:32485] git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@14157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 7 ++++++- eval_intern.h | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index c65eab877..d744316b2 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 e5680a273..61164de9a 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) -- cgit