From 8efc7ea9ad664b942f48e16bb325769b08844b9f Mon Sep 17 00:00:00 2001 From: akr Date: Mon, 18 Feb 2008 06:18:31 +0000 Subject: [PATCH] * string.c (rb_str_each_line): fix newline size. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@15539 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- ChangeLog | 4 ++++ string.c | 2 +- test/ruby/test_m17n.rb | 6 ++++++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index a6caaba3df..122651e89d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Mon Feb 18 15:16:30 2008 Tanaka Akira + + * string.c (rb_str_each_line): fix newline size. + Mon Feb 18 13:06:37 2008 Tanaka Akira * lib/irb/locale.rb (IRB::Locale#lc2kconv): check ja_JP.EUC-JP as well. diff --git a/string.c b/string.c index 6177059738..9bab8d4411 100644 --- a/string.c +++ b/string.c @@ -4896,7 +4896,7 @@ rb_str_each_line(int argc, VALUE *argv, VALUE str) p++; continue; } - p = p0 + rb_enc_mbclen(s, p0, enc); + p = p0 + rb_enc_mbclen(p0, pend, enc); line = rb_str_new5(str, s, p - s); OBJ_INFECT(line, str); rb_enc_copy(line, str); diff --git a/test/ruby/test_m17n.rb b/test/ruby/test_m17n.rb index c3e14f64c7..5ff2a9da78 100644 --- a/test/ruby/test_m17n.rb +++ b/test/ruby/test_m17n.rb @@ -980,6 +980,12 @@ class TestM17N < Test::Unit::TestCase def test_each_line s = e("\xa3\xb0\xa3\xb1\xa3\xb2\xa3\xb3\xa3\xb4") assert_raise(ArgumentError){s.each_line(a("\xa3\xb1")) {|l| }} + s = e("\xa4\xa2\nfoo") + + actual = [] + s.each_line {|line| actual << line } + expected = [e("\xa4\xa2\n"), e("foo")] + assert_equal(expected, actual) end def test_each_char