ruby-changes:14313
From: nahi <ko1@a...>
Date: Mon, 21 Dec 2009 15:33:24 +0900 (JST)
Subject: [ruby-changes:14313] Ruby:r26140 (ruby_1_8): * ext/stringio/stringio.c (strio_getline): fix for "" as separator.
nahi 2009-12-21 15:33:05 +0900 (Mon, 21 Dec 2009) New Revision: 26140 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26140 Log: * ext/stringio/stringio.c (strio_getline): fix for "" as separator. [ruby-dev:34591] (Backport r17739 by Yusuke Endoh from trunk). Modified files: branches/ruby_1_8/ChangeLog branches/ruby_1_8/ext/stringio/stringio.c branches/ruby_1_8/test/stringio/test_stringio.rb Index: ruby_1_8/ext/stringio/stringio.c =================================================================== --- ruby_1_8/ext/stringio/stringio.c (revision 26139) +++ ruby_1_8/ext/stringio/stringio.c (revision 26140) @@ -935,7 +935,7 @@ s = p; while ((p = memchr(p, '\n', e - p)) && (p != e)) { if (*++p == '\n') { - e = p; + e = p + 1; break; } } Index: ruby_1_8/ChangeLog =================================================================== --- ruby_1_8/ChangeLog (revision 26139) +++ ruby_1_8/ChangeLog (revision 26140) @@ -1,3 +1,8 @@ +Mon Dec 21 15:27:48 2009 NAKAMURA, Hiroshi <nahi@r...> + + * ext/stringio/stringio.c (strio_getline): fix for "" as separator. + [ruby-dev:34591] (Backport r17739 by Yusuke Endoh from trunk). + Mon Dec 21 15:20:42 2009 NAKAMURA, Hiroshi <nahi@r...> * test/openssl/{common.pem,max.pem}: added fixture certificates. Index: ruby_1_8/test/stringio/test_stringio.rb =================================================================== --- ruby_1_8/test/stringio/test_stringio.rb (revision 26139) +++ ruby_1_8/test/stringio/test_stringio.rb (revision 26140) @@ -56,6 +56,18 @@ assert_equal("abc\n\n", StringIO.new("abc\n\ndef\n").gets("")) end + def test_gets_paragraph + assert_equal("abc\n\n", StringIO.new("abc\n\ndef\n").gets("")) + assert_equal("abc\n\n", StringIO.new("\nabc\n\ndef\n").gets("")) + assert_equal("abc", StringIO.new("abc").gets("")) + assert_equal("abc\n", StringIO.new("abc\n").gets("")) + assert_equal(nil, StringIO.new("").gets("")) + assert_equal("def\n", StringIO.new("\n\ndef\n").gets("")) + s = StringIO.new("\n\nabc\n\n\n\ndef\n") + assert_equal("abc\n\n", s.gets("")) + assert_equal("def\n", s.gets("")) + end + def test_readlines assert_equal([], StringIO.new("").readlines) assert_equal(["\n"], StringIO.new("\n").readlines) -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/