[macruby-changes] [4157] MacRuby/trunk/dispatcher.cpp
source_changes at macosforge.org
source_changes at macosforge.org
Tue May 25 19:10:26 PDT 2010
Revision: 4157
http://trac.macosforge.org/projects/ruby/changeset/4157
Author: martinlagardette at apple.com
Date: 2010-05-25 19:10:25 -0700 (Tue, 25 May 2010)
Log Message:
-----------
Do not raise "ArgumentError" in the case where the method has been undefined
- Fixes #716
Modified Paths:
--------------
MacRuby/trunk/dispatcher.cpp
Modified: MacRuby/trunk/dispatcher.cpp
===================================================================
--- MacRuby/trunk/dispatcher.cpp 2010-05-26 02:06:02 UTC (rev 4156)
+++ MacRuby/trunk/dispatcher.cpp 2010-05-26 02:10:25 UTC (rev 4157)
@@ -944,17 +944,20 @@
if (new_sel != 0) {
Method m = class_getInstanceMethod(klass, new_sel);
if (m != NULL) {
- unsigned expected_argc;
- rb_vm_method_node_t *node = GET_CORE()->method_node_get(m);
- if (node != NULL) {
- expected_argc = node->arity.min;
+ IMP mimp = method_getImplementation(m);
+ if (!UNAVAILABLE_IMP(mimp)) {
+ unsigned expected_argc;
+ rb_vm_method_node_t *node = GET_CORE()->method_node_get(m);
+ if (node != NULL) {
+ expected_argc = node->arity.min;
+ }
+ else {
+ expected_argc = method_getNumberOfArguments(m);
+ expected_argc -= 2; // removing receiver and selector
+ }
+ rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)",
+ argc, expected_argc);
}
- else {
- expected_argc = method_getNumberOfArguments(m);
- expected_argc -= 2; // removing receiver and selector
- }
- rb_raise(rb_eArgError, "wrong number of arguments (%d for %d)",
- argc, expected_argc);
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20100525/88dac6e1/attachment.html>
More information about the macruby-changes
mailing list