diff --git a/ChangeLog b/ChangeLog index 794c3afeb2..18604e60ba 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +Fri Feb 29 23:14:38 2008 Yukihiro Matsumoto + + * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test + updated. + Fri Feb 29 20:58:09 2008 Yukihiro Matsumoto * test/ruby/test_iterator.rb (TestIterator::test_enumerator): diff --git a/string.c b/string.c index 32dd4d9cf0..ee8641e9b2 100644 --- a/string.c +++ b/string.c @@ -5357,11 +5357,11 @@ rb_str_chomp_bang(int argc, VALUE *argv, VALUE str) if (rslen == 1 && newline == '\n') goto smart_chomp; + enc = rb_enc_check(str, rs); if (is_broken_string(rs)) { return Qnil; } pp = e - rslen; - enc = rb_enc_check(str, rs); if (p[len-1] == newline && (rslen <= 1 || memcmp(RSTRING_PTR(rs), pp, rslen) == 0)) { diff --git a/test/ruby/test_m17n_comb.rb b/test/ruby/test_m17n_comb.rb index b3a5bfdc51..a3dcde3283 100644 --- a/test/ruby/test_m17n_comb.rb +++ b/test/ruby/test_m17n_comb.rb @@ -720,8 +720,10 @@ def test_str_rjust def test_str_chomp combination(STRINGS, STRINGS) {|s1, s2| - if !s1.ascii_only? && !s2.ascii_only? && s1.encoding != s2.encoding - assert_raise(ArgumentError) { s1.chomp(s2) } + if !s1.ascii_only? && !s2.ascii_only? && !Encoding.compatible?(s1,s2) + if s1.bytesize > s2.bytesize + assert_raise(ArgumentError) { s1.chomp(s2) } + end next end t = enccall(s1, :chomp, s2) @@ -1425,6 +1427,7 @@ def test_str_sub assert_equal(s1, doit.call) next end + assert(false, "test broken") if !str_enc_compatible?(s1.gsub(r2, ''), s3) assert_raise(ArgumentError, desc) { doit.call } next @@ -1479,6 +1482,7 @@ def test_str_sub! assert_equal([s1, nil], doit.call) next end + assert(false, "test broken") if !str_enc_compatible?(s1.gsub(r2, ''), s3) assert_raise(ArgumentError, desc) { doit.call } next