[macruby-changes] [2127] MacRuby/branches/experimental/vm.cpp

source_changes at macosforge.org source_changes at macosforge.org
Fri Jul 31 21:01:32 PDT 2009


Revision: 2127
          http://trac.macosforge.org/projects/ruby/changeset/2127
Author:   lsansonetti at apple.com
Date:     2009-07-31 21:01:30 -0700 (Fri, 31 Jul 2009)
Log Message:
-----------
fix a bug in the dispatcher where calling a method with an empty splat array wasn't dispatching a zero arity method

Modified Paths:
--------------
    MacRuby/branches/experimental/vm.cpp

Modified: MacRuby/branches/experimental/vm.cpp
===================================================================
--- MacRuby/branches/experimental/vm.cpp	2009-08-01 03:14:03 UTC (rev 2126)
+++ MacRuby/branches/experimental/vm.cpp	2009-08-01 04:01:30 UTC (rev 2127)
@@ -2759,8 +2759,22 @@
     if (argc > 0) {
 	va_list ar;
 	va_start(ar, argc);
-	argc = __rb_vm_resolve_args(argv, argc, ar);
+	const int new_argc = __rb_vm_resolve_args(argv, argc, ar);
 	va_end(ar);
+	if (argc > 0 && new_argc == 0) {
+	    const char *selname = sel_getName(sel);
+	    const size_t selnamelen = strlen(selname);
+	    if (selname[selnamelen - 1] == ':') {
+		// Because
+		//   def foo; end; foo(*[])
+		// creates foo but dispatches foo:.
+		char buf[100];
+		strncpy(buf, selname, sizeof buf);
+		buf[selnamelen - 1] = '\0';
+		sel = sel_registerName(buf);
+	    }
+	}
+  	argc = new_argc;
     }
 
     RoxorVM *vm = GET_VM();
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-changes/attachments/20090731/c04150bc/attachment.html>


More information about the macruby-changes mailing list