diff options
author | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-09 06:00:56 +0000 |
---|---|---|
committer | ko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-12-09 06:00:56 +0000 |
commit | a44f38ff52e3d828173e0719bc27ef7a5f381cf4 (patch) | |
tree | 171566b9990aad4fe690599bbddad019386a14b7 | |
parent | 3923d7f420d1cbcad2b7fd781ffeb389d3151d07 (diff) |
* eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size.
[ruby-dev:32485]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@14157 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 7 | ||||
-rw-r--r-- | eval_intern.h | 2 |
2 files changed, 7 insertions, 2 deletions
@@ -1,7 +1,12 @@ +Sun Dec 9 14:59:15 2007 Koichi Sasada <ko1@atdot.net> + + * eval_intern.h (CHECK_STACK_OVERFLOW): reserve frame size. + [ruby-dev:32485] + Sun Dec 9 14:38:25 2007 Koichi Sasada <ko1@atdot.net> * 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) |