Re: [MacRuby] #723: bug when calling the same variadic method multiple times with different arity
#723: bug when calling the same variadic method multiple times with different arity -----------------------------------+---------------------------------------- Reporter: jakub.suder@… | Owner: lsansonetti@… Type: defect | Status: new Priority: major | Milestone: Component: MacRuby | Keywords: 0.7-blocker -----------------------------------+---------------------------------------- Comment(by martinlagardette@…): As discussed, this is because the whole project needs to be recompiled. However, it spec:ci only works if I use `< argc` instead of `!= argc` (see below), which seems "lucky", which is why I'll investigate a little more. {{{ #!diff Index: vm.h =================================================================== --- vm.h (revision 4468) +++ vm.h (working copy) @@ -556,6 +556,7 @@ } rcall; struct { IMP imp; + int argc; bs_element_method_t *bs_method; rb_vm_objc_stub_t *stub; } ocall; Index: dispatcher.cpp =================================================================== --- dispatcher.cpp (revision 4468) +++ dispatcher.cpp (working copy) @@ -501,6 +501,7 @@ cache->sel = sel; cache->klass = klass; cache->as.ocall.imp = imp; + cache->as.ocall.argc = argc; cache->as.ocall.bs_method = GET_CORE()->find_bs_method(klass, sel); char types[200]; @@ -829,6 +830,9 @@ return v; } else if (cache->flag & MCACHE_OCALL) { + if (cache->as.ocall.argc < argc) { + goto recache; + } if (!cache_method) { cache->flag = 0; } -- Ticket URL: <http://www.macruby.org/trac/ticket/723#comment:10> MacRuby <http://macruby.org/>
participants (1)
-
MacRuby