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