summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-08-06 03:10:24 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2001-08-06 03:10:24 +0000
commit3955aef501ee1ca2c9a86ba4701966b9691e7127 (patch)
treef733165963c0f6cfbc9cbccfb75ee5abddd53600 /eval.c
parent42d1f98904d075471b46f3b40408c8118e680338 (diff)
* struct.c (rb_struct_modify): should check frozen and taint
status. * eval.c (rb_undefined): do not recurse if method_missing is undefined. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_6@1668 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/eval.c b/eval.c
index bf27483502..8ad1eab2fb 100644
--- a/eval.c
+++ b/eval.c
@@ -4135,12 +4135,18 @@ rb_undefined(obj, id, argc, argv, call_status)
{
VALUE *nargv;
+ last_call_status = call_status;
+
+ if (id == missing) {
+ PUSH_FRAME();
+ rb_f_missing(argc, argv, obj);
+ POP_FRAME();
+ }
+
nargv = ALLOCA_N(VALUE, argc+1);
nargv[0] = ID2SYM(id);
MEMCPY(nargv+1, argv, VALUE, argc);
- last_call_status = call_status;
-
return rb_funcall2(obj, missing, argc+1, nargv);
}