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

ruby-changes:6348

From: usa <ko1@a...>
Date: Fri, 4 Jul 2008 02:38:59 +0900 (JST)
Subject: [ruby-changes:6348] Ruby:r17863 (ruby_1_8): * numeric.c (check_uint, rb_num2uint): also needs checking negative

usa	2008-07-04 02:38:41 +0900 (Fri, 04 Jul 2008)

  New Revision: 17863

  Modified files:
    branches/ruby_1_8/ChangeLog
    branches/ruby_1_8/numeric.c

  Log:
    * numeric.c (check_uint, rb_num2uint): also needs checking negative
      value. see [ruby-dev:33683]
    


  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17863

Index: ruby_1_8/numeric.c
===================================================================
--- ruby_1_8/numeric.c	(revision 17862)
+++ ruby_1_8/numeric.c	(revision 17863)
@@ -1600,11 +1600,12 @@
 }
 
 static void
-check_uint(num)
+check_uint(num, sign)
     unsigned long num;
+    int sign;
 {
     if (num > UINT_MAX) {
-	rb_raise(rb_eRangeError, "integer %lu too big to convert to `unsigned int'", num);
+	rb_raise(rb_eRangeError, "integer %lu too %s to convert to `unsigned int'", num, sign ? "small" : "big");
     }
 }
 
@@ -1634,9 +1635,7 @@
 {
     unsigned long num = rb_num2ulong(val);
 
-    if (RTEST(rb_funcall(INT2FIX(0), '<', 1, val))) {
-	check_uint(num);
-    }
+    check_uint(num, RTEST(rb_funcall(val, '<', 1, INT2FIX(0))));
     return num;
 }
 
@@ -1650,9 +1649,7 @@
         return rb_num2uint(val);
     }
     num = FIX2ULONG(val);
-    if (FIX2LONG(val) > 0) {
-	check_uint(num);
-    }
+    check_uint(num, RTEST(rb_funcall(val, '<', INT2FIX(0))));
     return num;
 }
 #else
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog	(revision 17862)
+++ ruby_1_8/ChangeLog	(revision 17863)
@@ -1,3 +1,8 @@
+Fri Jul  4 02:38:24 2008  NAKAMURA Usaku  <usa@r...>
+
+	* numeric.c (check_uint, rb_num2uint): also needs checking negative
+	  value. see [ruby-dev:33683]
+
 Thu Jul  3 19:35:45 2008  Kazuhiro NISHIYAMA  <zn@m...>
 
 	* ruby.c: Mac OS X needs origargc times of '\0' in

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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