diff options
author | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 20:55:59 +0000 |
---|---|---|
committer | shyouhei <shyouhei@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2007-08-15 20:55:59 +0000 |
commit | a2055d63b41a6678dc7aeb17d0bece314e700c5a (patch) | |
tree | 9c8e1ebd2d5758b860763f021b9c64935e3658ed | |
parent | 2f1eb739412a85579ff4de5567474e7c8fe1b7c3 (diff) | |
parent | 1287260819a8e2dc5ca14da4b5e58b110064fe44 (diff) |
sorry. I made wrong tags.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/tags/v1_8_5_71@12993 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | bignum.c | 31 | ||||
-rw-r--r-- | version.h | 2 |
3 files changed, 16 insertions, 22 deletions
@@ -1,8 +1,3 @@ -Thu Aug 16 05:02:39 2007 Nobuyoshi Nakada <nobu@ruby-lang.org> - - * bignum.c (rb_cstr_to_inum): check leading non-digits. - [ruby-core:11691] - Thu Aug 16 05:00:01 2007 Yukihiro Matsumoto <matz@ruby-lang.org> * numeric.c (fix_pow): 0**2 should not raise floating point @@ -331,13 +331,6 @@ rb_cstr_to_inum(str, base, badcheck) VALUE z; BDIGIT *zds; -#define conv_digit(c) \ - (!ISASCII(c) ? -1 : \ - isdigit(c) ? ((c) - '0') : \ - islower(c) ? ((c) - 'a' + 10) : \ - isupper(c) ? ((c) - 'A' + 10) : \ - -1) - if (!str) { if (badcheck) goto bad; return INT2FIX(0); @@ -430,13 +423,7 @@ rb_cstr_to_inum(str, base, badcheck) } if (*str == '0') { /* squeeze preceeding 0s */ while (*++str == '0'); - if (!*str) --str; - } - c = *str; - c = conv_digit(c); - if (c < 0 || c >= base) { - if (badcheck) goto bad; - return INT2FIX(0); + --str; } len *= strlen(str)*sizeof(char); @@ -470,7 +457,7 @@ rb_cstr_to_inum(str, base, badcheck) z = bignew(len, sign); zds = BDIGITS(z); for (i=len;i--;) zds[i]=0; - while ((c = *str++) != 0) { + while (c = *str++) { if (c == '_') { if (badcheck) { if (nondigit) goto bad; @@ -478,7 +465,19 @@ rb_cstr_to_inum(str, base, badcheck) } continue; } - else if ((c = conv_digit(c)) < 0) { + else if (!ISASCII(c)) { + break; + } + else if (isdigit(c)) { + c -= '0'; + } + else if (islower(c)) { + c -= 'a' - 10; + } + else if (isupper(c)) { + c -= 'A' - 10; + } + else { break; } if (c >= base) break; @@ -2,7 +2,7 @@ #define RUBY_RELEASE_DATE "2007-08-16" #define RUBY_VERSION_CODE 185 #define RUBY_RELEASE_CODE 20070816 -#define RUBY_PATCHLEVEL 72 +#define RUBY_PATCHLEVEL 71 #define RUBY_VERSION_MAJOR 1 #define RUBY_VERSION_MINOR 8 |