* bignum.c (rb_cstr_to_inum): '0_2' is a valid representatin.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15336 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
tadf 2008-01-30 03:07:37 +00:00
Родитель 7b83d04514
Коммит fb997983a2
2 изменённых файлов: 15 добавлений и 3 удалений

Просмотреть файл

@ -1,3 +1,7 @@
Wed Jan 30 12:06:43 2008 Tadayoshi Funaba <tadf@dotrb.org>
* bignum.c (rb_cstr_to_inum): '0_2' is a valid representatin.
Wed Jan 30 11:57:50 2008 NARUSE, Yui <naruse@ruby-lang.org>
* bootstraptest/runner.rb: fix -I../../hoge case.

Просмотреть файл

@ -438,7 +438,7 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
len = 2;
break;
case 8:
if (str[0] == '0' && (str[1] == 'o'||str[1] == 'O'||str[1] == '_')) {
if (str[0] == '0' && (str[1] == 'o'||str[1] == 'O')) {
str += 2;
}
case 4: case 5: case 6: case 7:
@ -470,8 +470,16 @@ rb_cstr_to_inum(const char *str, int base, int badcheck)
break;
}
if (*str == '0') { /* squeeze preceding 0s */
while (*++str == '0');
if (!(c = *str) || ISSPACE(c)) --str;
int nn = 0;
while ((c = *++str) == '0' || c == '_') {
if (c == '_') {
nn++;
if (nn >= 2)
break;
} else
nn = 0;
}
if (!(c = *str) || ISSPACE(c)) --str;
}
c = *str;
c = conv_digit(c);