summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-13 23:55:04 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2004-12-13 23:55:04 +0000
commit21ae9c745ad435cad08ac394326dee7b77d8e66c (patch)
treee5e38812ccb87d1df5a1232a1e22b952601be400 /eval.c
parent96439f2a4a09c0994883991226966b79701968db (diff)
* eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@7548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c66
1 files changed, 12 insertions, 54 deletions
diff --git a/eval.c b/eval.c
index 78e967ff0a..8674c8c436 100644
--- a/eval.c
+++ b/eval.c
@@ -5832,14 +5832,20 @@ rb_f_send(argc, argv, recv)
return vid;
}
-static VALUE
-vafuncall(recv, mid, n, ar)
+VALUE
+#ifdef HAVE_STDARG_PROTOTYPES
+rb_funcall(VALUE recv, ID mid, int n, ...)
+#else
+rb_funcall(recv, mid, n, va_alist)
VALUE recv;
ID mid;
int n;
- va_list *ar;
+ va_dcl
+#endif
{
VALUE *argv;
+ va_list ar;
+ va_init_list(ar, n);
if (n > 0) {
long i;
@@ -5847,9 +5853,9 @@ vafuncall(recv, mid, n, ar)
argv = ALLOCA_N(VALUE, n);
for (i=0;i<n;i++) {
- argv[i] = va_arg(*ar, VALUE);
+ argv[i] = va_arg(ar, VALUE);
}
- va_end(*ar);
+ va_end(ar);
}
else {
argv = 0;
@@ -5859,55 +5865,6 @@ vafuncall(recv, mid, n, ar)
}
VALUE
-#ifdef HAVE_STDARG_PROTOTYPES
-rb_funcall(VALUE recv, ID mid, int n, ...)
-#else
-rb_funcall(recv, mid, n, va_alist)
- VALUE recv;
- ID mid;
- int n;
- va_dcl
-#endif
-{
- va_list ar;
- va_init_list(ar, n);
-
- return vafuncall(recv, mid, n, &ar);
-}
-
-VALUE
-#ifdef HAVE_STDARG_PROTOTYPES
-rb_funcall_rescue(VALUE recv, ID mid, int n, ...)
-#else
-rb_funcall_rescue(recv, mid, n, va_alist)
- VALUE recv;
- ID mid;
- int n;
- va_dcl
-#endif
-{
- VALUE result = Qnil; /* OK */
- int status;
- va_list ar;
-
- va_init_list(ar, n);
-
- PUSH_TAG(PROT_NONE);
- if ((status = EXEC_TAG()) == 0) {
- result = vafuncall(recv, mid, n, &ar);
- }
- POP_TAG();
- switch (status) {
- case 0:
- return result;
- case TAG_RAISE:
- return Qundef;
- default:
- JUMP_TAG(status);
- }
-}
-
-VALUE
rb_funcall2(recv, mid, argc, argv)
VALUE recv;
ID mid;
@@ -7610,6 +7567,7 @@ Init_eval()
__send__ = rb_intern("__send__");
rb_global_variable((VALUE*)&top_scope);
+ rb_global_variable((VALUE*)&ruby_eval_tree);
rb_global_variable((VALUE*)&ruby_dyna_vars);
rb_define_virtual_variable("$@", errat_getter, errat_setter);