ruby-changes:6354
From: usa <ko1@a...>
Date: Fri, 4 Jul 2008 17:53:09 +0900 (JST)
Subject: [ruby-changes:6354] Ruby:r17870 (trunk): * numeric.c (check_uint, rb_num2uint, rb_fix2uint): proper check.
usa 2008-07-04 17:52:51 +0900 (Fri, 04 Jul 2008) New Revision: 17870 Modified files: trunk/ChangeLog trunk/numeric.c Log: * numeric.c (check_uint, rb_num2uint, rb_fix2uint): proper check. http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=17870 Index: ChangeLog =================================================================== --- ChangeLog (revision 17869) +++ ChangeLog (revision 17870) @@ -1,3 +1,7 @@ +Fri Jul 4 17:51:07 2008 NAKAMURA Usaku <usa@r...> + + * numeric.c (check_uint, rb_num2uint, rb_fix2uint): proper check. + Fri Jul 4 14:17:22 2008 Nobuyoshi Nakada <nobu@r...> * lib/net/ftp.rb (Net::FTP#sendport): use divmod. [ruby-core:17557] Index: numeric.c =================================================================== --- numeric.c (revision 17869) +++ numeric.c (revision 17870) @@ -1585,10 +1585,10 @@ } static void -check_uint(VALUE num, int sign) +check_uint(VALUE num) { if (num > UINT_MAX) { - rb_raise(rb_eRangeError, "integer %"PRIuVALUE " too %s to convert to `unsigned int'", num, sign ? "small" : "big"); + rb_raise(rb_eRangeError, "integer %"PRIuVALUE " too big to convert to `unsigned int'", num); } } @@ -1615,7 +1615,10 @@ { unsigned long num = rb_num2ulong(val); - check_uint(num, RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))); + if (RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))) + check_int(num); + else + check_uint(num); return num; } @@ -1628,7 +1631,10 @@ return rb_num2uint(val); } num = FIX2ULONG(val); - check_uint(num, RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))); + if (RTEST(rb_funcall(val, '<', 1, INT2FIX(0)))) + check_int(num); + else + check_uint(num); return num; } #else -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/