summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2014-11-19 19:27:57 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2014-11-19 19:27:57 +0900
commit88195a7c99b910ef81f64b29149d3246092e3a52 (patch)
tree80714395e2111789af976e60b109ad129577e4c6
parent4eabf7d91cdd5ef3623c4bd2befbc3d9d082d9f3 (diff)
parent820f6d147fb13ade3b69eb87cfee39f85ee4a6ce (diff)
downloadmruby-88195a7c99b910ef81f64b29149d3246092e3a52.tar.gz
mruby-88195a7c99b910ef81f64b29149d3246092e3a52.zip
Merge pull request #2641 from sdottaka/super-fix
Fix an error when calling a method implemented in C by super() with argu...
-rw-r--r--src/vm.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/vm.c b/src/vm.c
index 118efb64b..88c0f2e49 100644
--- a/src/vm.c
+++ b/src/vm.c
@@ -1250,7 +1250,12 @@ RETRY_TRY_BLOCK:
mrb->c->stack[0] = recv;
if (MRB_PROC_CFUNC_P(m)) {
- ci->nregs = 0;
+ if (n == CALL_MAXARGS) {
+ ci->nregs = 3;
+ }
+ else {
+ ci->nregs = n + 2;
+ }
mrb->c->stack[0] = m->body.func(mrb, recv);
mrb_gc_arena_restore(mrb, ai);
if (mrb->exc) goto L_RAISE;