diff --git a/ChangeLog b/ChangeLog index 0ae387bed6..cfc2d47647 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Sun Nov 18 20:46:08 2012 Tadayoshi Funaba + + * bignum.c (rb_cstr_to_inum): should accept underscores of + sequence of two or more when unchecked mode. + Sun Nov 18 16:33:00 2012 Naohisa Goto * configure.in, Makefile.in, common.mk: support DTrace on Solaris 10, diff --git a/bignum.c b/bignum.c index 97be53faf1..b6e551b837 100644 --- a/bignum.c +++ b/bignum.c @@ -733,7 +733,8 @@ rb_cstr_to_inum(const char *str, int base, int badcheck) if (badcheck) goto bad; break; } - nondigit = (char) c; + if (badcheck) + nondigit = (char) c; continue; } else if ((c = conv_digit(c)) < 0) { diff --git a/test/ruby/test_string.rb b/test/ruby/test_string.rb index 2beaef3504..9f63847da3 100644 --- a/test/ruby/test_string.rb +++ b/test/ruby/test_string.rb @@ -1513,7 +1513,7 @@ class TestString < Test::Unit::TestCase assert_equal(12, "1_2".to_i(10)) assert_equal(0x40000000, "1073741824".to_i(10)) assert_equal(0x4000000000000000, "4611686018427387904".to_i(10)) - assert_equal(1, "1__2".to_i(10)) + assert_equal(12, "1__2".to_i(10)) assert_equal(1, "1_z".to_i(10)) bug6192 = '[ruby-core:43566]'