[前][次][番号順一覧][スレッド一覧]

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/

[前][次][番号順一覧][スレッド一覧]