summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--string.c2
-rw-r--r--test/ruby/test_m17n_comb.rb8
3 files changed, 12 insertions, 3 deletions
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 <matz@ruby-lang.org>
+
+ * test/ruby/test_m17n_comb.rb (TestM17NComb::test_str_chomp): test
+ updated.
+
Fri Feb 29 20:58:09 2008 Yukihiro Matsumoto <matz@ruby-lang.org>
* 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 @@ class TestM17NComb < Test::Unit::TestCase
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 @@ class TestM17NComb < Test::Unit::TestCase
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 @@ class TestM17NComb < Test::Unit::TestCase
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