summaryrefslogtreecommitdiff
path: root/eval.c
diff options
context:
space:
mode:
authormatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-05-18 00:34:41 +0000
committermatz <matz@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>1999-05-18 00:34:41 +0000
commitc59869494a1a299cad47676e626cfc918c92364e (patch)
tree3f5a9f77ae12e51ecc8147ddcb141447ea7820a2 /eval.c
parentc8bd43a967355ddb5acb2fad757db3faaf7465fb (diff)
arity bug
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'eval.c')
-rw-r--r--eval.c8
1 files changed, 4 insertions, 4 deletions
diff --git a/eval.c b/eval.c
index 46bf5fe9a0..8b27fe110b 100644
--- a/eval.c
+++ b/eval.c
@@ -5523,10 +5523,10 @@ proc_arity(proc)
int n;
Data_Get_Struct(proc, struct BLOCK, data);
- if (data->var == 0) return 0;
+ if (data->var == 0) return FIX2INT(-1);
switch (nd_type(data->var)) {
default:
- return INT2FIX(-1);
+ return INT2FIX(-2);
case NODE_MASGN:
list = data->var->nd_head;
n = 0;
@@ -5534,7 +5534,7 @@ proc_arity(proc)
n++;
list = list->nd_next;
}
- if (data->var->nd_args) return INT2FIX(-n);
+ if (data->var->nd_args) return INT2FIX(-n-1);
return INT2FIX(n);
}
}
@@ -5717,7 +5717,7 @@ method_arity(method)
body = body->nd_head;
if (!body) return INT2FIX(0);
n = body->nd_cnt;
- if (body->nd_rest) n = -n;
+ if (body->nd_rest) n = -n-1;
return INT2FIX(n);
}
}