From 67aa07f44d40e5e67081c6e8fef5af49caee1525 Mon Sep 17 00:00:00 2001 From: ko1 Date: Wed, 26 Sep 2007 10:39:49 +0000 Subject: * eval.c (eval): fix to check stack overflow. * eval_intern.h, vm.h: move CHECK_STACK_OVERFLOW() macro. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@13521 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- eval_intern.h | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'eval_intern.h') diff --git a/eval_intern.h b/eval_intern.h index 3f4c81bf48..e5680a2731 100644 --- a/eval_intern.h +++ b/eval_intern.h @@ -186,6 +186,12 @@ char *strrchr _((const char *, const char)); ruby_cref()->nd_visi = (f); \ } +#define CHECK_STACK_OVERFLOW(cfp, margin) do \ + if (((VALUE *)(cfp)->sp) + (margin) >= ((VALUE *)cfp)) { \ + rb_exc_raise(sysstack_error); \ + } \ +while (0) + void rb_thread_cleanup _((void)); void rb_thread_wait_other_threads _((void)); -- cgit v1.2.3