summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-09 06:00:56 +0000
committerko1 <ko1@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-12-09 06:00:56 +0000
commitab87d09068d0185d7fa93bdcdff2127fe60ce421 (patch)
tree171566b9990aad4fe690599bbddad019386a14b7
parentea0dfdd73a8f48f132ab8624b50fb910d29733ad (diff)
downloadruby-ab87d09068d0185d7fa93bdcdff2127fe60ce421.tar.gz
ruby-ab87d09068d0185d7fa93bdcdff2127fe60ce421.tar.xz
ruby-ab87d09068d0185d7fa93bdcdff2127fe60ce421.zip
* 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
-rw-r--r--ChangeLog7
-rw-r--r--eval_intern.h2
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 <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 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)