Skip to content

Commit c598694

Browse files
author
matz
committed
arity bug
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_3@470 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
1 parent c8bd43a commit c598694

File tree

3 files changed

+13
-5
lines changed

3 files changed

+13
-5
lines changed

ChangeLog

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
Mon May 17 12:26:31 1999 Yukihiro Matsumoto <matz@netlab.co.jp>
22

3+
* numeric.c (fix_rev): should treat Fixnum as signed long.
4+
5+
* eval.c (massign): add strict number check for yield (and call).
6+
7+
* eval.c (proc_arity): new method to return number of arguments.
8+
9+
* eval.c (method_arity): new method to return number of arguments.
10+
311
* parse.y (read_escape): char may be unsigned.
412

513
* string.c (rb_str_succ): ditto.

eval.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5523,18 +5523,18 @@ proc_arity(proc)
55235523
int n;
55245524

55255525
Data_Get_Struct(proc, struct BLOCK, data);
5526-
if (data->var == 0) return 0;
5526+
if (data->var == 0) return FIX2INT(-1);
55275527
switch (nd_type(data->var)) {
55285528
default:
5529-
return INT2FIX(-1);
5529+
return INT2FIX(-2);
55305530
case NODE_MASGN:
55315531
list = data->var->nd_head;
55325532
n = 0;
55335533
while (list) {
55345534
n++;
55355535
list = list->nd_next;
55365536
}
5537-
if (data->var->nd_args) return INT2FIX(-n);
5537+
if (data->var->nd_args) return INT2FIX(-n-1);
55385538
return INT2FIX(n);
55395539
}
55405540
}
@@ -5717,7 +5717,7 @@ method_arity(method)
57175717
body = body->nd_head;
57185718
if (!body) return INT2FIX(0);
57195719
n = body->nd_cnt;
5720-
if (body->nd_rest) n = -n;
5720+
if (body->nd_rest) n = -n-1;
57215721
return INT2FIX(n);
57225722
}
57235723
}

numeric.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1100,7 +1100,7 @@ static VALUE
11001100
fix_rev(num)
11011101
VALUE num;
11021102
{
1103-
unsigned long val = FIX2ULONG(num);
1103+
long val = FIX2LONG(num);
11041104

11051105
val = ~val;
11061106
return rb_int2inum(val);

0 commit comments

Comments
 (0)