ruby-changes:3133
From: ko1@a...
Date: 25 Dec 2007 03:12:38 +0900
Subject: [ruby-changes:3133] usa - Ruby:r14625 (trunk): * pack.c (pack_pack): use NUM2LONG instead of NUM2INT.
usa 2007-12-25 03:12:24 +0900 (Tue, 25 Dec 2007) New Revision: 14625 Modified files: trunk/ChangeLog trunk/bignum.c trunk/numeric.c trunk/pack.c Log: * pack.c (pack_pack): use NUM2LONG instead of NUM2INT. * numeric.c (fix_lshift, fix_aref): use SIZEOF_LONG instead of SIZEOF_VALUE. * bignum.c (big2ulong, rb_big_aref): ditto. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/numeric.c?r1=14625&r2=14624 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/ChangeLog?r1=14625&r2=14624 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/bignum.c?r1=14625&r2=14624 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/trunk/pack.c?r1=14625&r2=14624 Index: ChangeLog =================================================================== --- ChangeLog (revision 14624) +++ ChangeLog (revision 14625) @@ -1,3 +1,12 @@ +Tue Dec 25 03:08:53 2007 NAKAMURA Usaku <usa@r...> + + * pack.c (pack_pack): use NUM2LONG instead of NUM2INT. + + * numeric.c (fix_lshift, fix_aref): use SIZEOF_LONG instead of + SIZEOF_VALUE. + + * bignum.c (big2ulong, rb_big_aref): ditto. + Tue Dec 25 02:55:26 2007 GOTOU Yuuzou <gotoyuzo@n...> * lib/rexml/element.rb (REXML::Elements#each): yield in each Index: pack.c =================================================================== --- pack.c (revision 14624) +++ pack.c (revision 14625) @@ -861,13 +861,13 @@ case 'U': /* Unicode character */ while (len-- > 0) { - long l; + SIGNED_VALUE l; char buf[8]; int le; from = NEXTFROM; from = rb_to_int(from); - l = NUM2INT(from); + l = NUM2LONG(from); if (l < 0) { rb_raise(rb_eRangeError, "pack(U): value out of range"); } Index: numeric.c =================================================================== --- numeric.c (revision 14624) +++ numeric.c (revision 14625) @@ -2669,8 +2669,8 @@ static VALUE fix_lshift(long val, unsigned long width) { - if (width > (sizeof(VALUE)*CHAR_BIT-1) - || ((unsigned long)val)>>(sizeof(VALUE)*CHAR_BIT-1-width) > 0) { + if (width > (SIZEOF_LONG*CHAR_BIT-1) + || ((unsigned long)val)>>(SIZEOF_LONG*CHAR_BIT-1-width) > 0) { return rb_big_lshift(rb_int2big(val), ULONG2NUM(width)); } val = val << width; @@ -2743,7 +2743,7 @@ i = NUM2LONG(idx); if (i < 0) return INT2FIX(0); - if (sizeof(VALUE)*CHAR_BIT-1 < i) { + if (SIZEOF_LONG*CHAR_BIT-1 < i) { if (val < 0) return INT2FIX(1); return INT2FIX(0); } Index: bignum.c =================================================================== --- bignum.c (revision 14624) +++ bignum.c (revision 14625) @@ -977,10 +977,10 @@ BDIGIT_DBL num; BDIGIT *ds; - if (len > SIZEOF_VALUE/SIZEOF_BDIGITS) { + if (len > DIGSPERLONG) { if (check) rb_raise(rb_eRangeError, "bignum too big to convert into `%s'", type); - len = SIZEOF_VALUE/SIZEOF_BDIGITS; + len = DIGSPERLONG; } ds = BDIGITS(x); num = 0; @@ -2390,7 +2390,7 @@ if (TYPE(y) == T_BIGNUM) { if (!RBIGNUM_SIGN(y)) return INT2FIX(0); - if (RBIGNUM_LEN(bigtrunc(y)) > SIZEOF_VALUE/SIZEOF_BDIGITS) { + if (RBIGNUM_LEN(bigtrunc(y)) > DIGSPERLONG) { out_of_range: return RBIGNUM_SIGN(x) ? INT2FIX(0) : INT2FIX(1); } -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml