[前][次][番号順一覧][スレッド一覧]

ruby-changes:9623

From: ko1 <ko1@a...>
Date: Mon, 29 Dec 2008 16:45:18 +0900 (JST)
Subject: [ruby-changes:9623] Ruby:r21163 (trunk): * vm.c (vm_set_eval_stack, vm_set_main_stack, vm_set_top_stack):

ko1	2008-12-29 16:44:56 +0900 (Mon, 29 Dec 2008)

  New Revision: 21163

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=21163

  Log:
    * vm.c (vm_set_eval_stack, vm_set_main_stack, vm_set_top_stack):
      check stack overflow.  [ruby-dev:37646]

  Modified files:
    trunk/ChangeLog
    trunk/vm.c

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 21162)
+++ ChangeLog	(revision 21163)
@@ -1,3 +1,8 @@
+Mon Dec 29 16:16:20 2008  Koichi Sasada  <ko1@a...>
+
+	* vm.c (vm_set_eval_stack, vm_set_main_stack, vm_set_top_stack): 
+	  check stack overflow.  [ruby-dev:37646]
+
 Sun Dec 28 18:36:33 2008  Yuki Sonoda (Yugui)  <yugui@y...>
 
 	* test/rubygems/test_gem_command.rb
Index: vm.c
===================================================================
--- vm.c	(revision 21162)
+++ vm.c	(revision 21163)
@@ -77,6 +77,8 @@
     vm_push_frame(th, iseq, VM_FRAME_MAGIC_TOP,
 		  th->top_self, 0, iseq->iseq_encoded,
 		  th->cfp->sp, 0, iseq->local_size);
+
+        CHECK_STACK_OVERFLOW(th->cfp, iseq->stack_max);
 }
 
 static void
@@ -95,6 +97,8 @@
     if (cref) {
 	th->cfp->dfp[-1] = (VALUE)cref;
     }
+
+    CHECK_STACK_OVERFLOW(th->cfp, iseq->stack_max);
 }
 
 static void
@@ -116,6 +120,8 @@
     if (bind && iseq->local_size > 0) {
 	bind->env = vm_make_env_object(th, th->cfp);
     }
+
+    CHECK_STACK_OVERFLOW(th->cfp, iseq->stack_max);
 }
 
 rb_control_frame_t *

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]