aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--eval.c66
-rw-r--r--intern.h1
3 files changed, 16 insertions, 55 deletions
diff --git a/ChangeLog b/ChangeLog
index 799b52d323..49362f5f5f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Dec 14 08:47:45 2004 Yukihiro Matsumoto <matz@ruby-lang.org>
+
+ * eval.c (Init_eval): should mark ruby_eval_tree. [ruby-dev:25189]
+
Mon Dec 13 18:13:52 2004 Tanaka Akira <akr@m17n.org>
* gc.c (set_stack_end): new function to obtain stack end address.
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);
diff --git a/intern.h b/intern.h
index 8bc30db0e7..c0aa9a738c 100644
--- a/intern.h
+++ b/intern.h
@@ -224,7 +224,6 @@ VALUE rb_thread_main _((void));
VALUE rb_thread_local_aref _((VALUE, ID));
VALUE rb_thread_local_aset _((VALUE, ID, VALUE));
void rb_thread_atfork _((void));
-VALUE rb_funcall_rescue __((VALUE, ID, int, ...));
/* file.c */
int eaccess _((const char*, int));
VALUE rb_file_s_expand_path _((int, VALUE *));