[前][次][番号順一覧][スレッド一覧]

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

[前][次][番号順一覧][スレッド一覧]