summaryrefslogtreecommitdiffhomepage
path: root/src/class.c
diff options
context:
space:
mode:
authorYukihiro Matsumoto <[email protected]>2012-08-02 22:03:53 +0900
committerYukihiro Matsumoto <[email protected]>2012-08-02 22:03:53 +0900
commit6491693d00038f62f8b4f8f3c5cef93068f65956 (patch)
treed7b1f05b7eb7e7344325709695e0c3819c27048e /src/class.c
parentcc0f249c17a68eaa5e016638b465c2087b983148 (diff)
downloadmruby-6491693d00038f62f8b4f8f3c5cef93068f65956.tar.gz
mruby-6491693d00038f62f8b4f8f3c5cef93068f65956.zip
mrb_get_args("&") gave wrong value
Diffstat (limited to 'src/class.c')
-rw-r--r--src/class.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/class.c b/src/class.c
index 50d0b6317..d6c7a92fb 100644
--- a/src/class.c
+++ b/src/class.c
@@ -602,12 +602,15 @@ mrb_get_args(mrb_state *mrb, const char *format, ...)
case '&':
{
- mrb_value *p, *bp = mrb->stack + 1;
+ mrb_value *p, *bp;
p = va_arg(ap, mrb_value*);
- if (mrb->ci->argc > 0) {
- bp += mrb->ci->argc;
+ if (mrb->ci->argc < 0) {
+ bp = mrb->stack + 2;
}
+ else {
+ bp = mrb->stack + mrb->ci->argc + 1;
+ }
*p = *bp;
}
break;