diff --git a/ChangeLog b/ChangeLog index 68ba3a8416..c613855f9a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Sat Nov 28 09:05:53 2009 Yukihiro Matsumoto + + * vm_eval.c (check_funcall_failed): should rescue user raised + NoMethodError. rescue all NoMethodError if receiver does not + respond to the method name. [ruby-dev:39796] + Thu Nov 26 21:14:30 2009 Yuki Sonoda (Yugui) * test/ruby/test_complex.rb (@unify): fix the detection if math diff --git a/vm_eval.c b/vm_eval.c index 8d1054c8af..18cc8361d3 100644 --- a/vm_eval.c +++ b/vm_eval.c @@ -255,10 +255,9 @@ check_funcall_exec(struct rescue_funcall_args *args) static VALUE check_funcall_failed(struct rescue_funcall_args *args, VALUE e) { - VALUE sym = rb_funcall(e, rb_intern("name"), 0, 0); - - if (args->sym != sym) + if (rb_respond_to(args->recv, args->sym)) { rb_exc_raise(e); + } return Qundef; }