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

ruby-changes:25506

From: naruse <ko1@a...>
Date: Thu, 8 Nov 2012 19:04:36 +0900 (JST)
Subject: [ruby-changes:25506] naruse:r37563 (trunk): * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):

naruse	2012-11-08 19:04:24 +0900 (Thu, 08 Nov 2012)

  New Revision: 37563

  http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=37563

  Log:
    * lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
      treat \r as newline as mame pointed. [ruby-dev:46425] [Bug #7278]

  Modified files:
    trunk/ChangeLog
    trunk/lib/net/protocol.rb
    trunk/test/net/protocol/test_protocol.rb

Index: ChangeLog
===================================================================
--- ChangeLog	(revision 37562)
+++ ChangeLog	(revision 37563)
@@ -1,3 +1,8 @@
+Thu Nov  8 19:02:50 2012  NARUSE, Yui  <naruse@r...>
+
+	* lib/net/protocol.rb (Net::InternetMessageIO#each_crlf_line):
+	  treat \r as newline as mame pointed. [ruby-dev:46425] [Bug #7278]
+
 Thu Nov  8 11:32:11 2012  Akinori MUSHA  <knu@i...>
 
 	* configure.in (--with-opt-dir): Avoid nesting of double quotes
Index: lib/net/protocol.rb
===================================================================
--- lib/net/protocol.rb	(revision 37562)
+++ lib/net/protocol.rb	(revision 37563)
@@ -322,7 +322,7 @@
 
     def each_crlf_line(src)
       buffer_filling(@wbuf, src) do
-        while line = @wbuf.slice!(/\A.*(?:\n|\r\n|\r(?!\z))/)
+        while line = @wbuf.slice!(/\A[^\r\n]*(?:\n|\r(?:\n|(?!\z)))/)
           yield line.chomp("\n") + "\r\n"
         end
       end
Index: test/net/protocol/test_protocol.rb
===================================================================
--- test/net/protocol/test_protocol.rb	(revision 37562)
+++ test/net/protocol/test_protocol.rb	(revision 37563)
@@ -5,7 +5,15 @@
 class TestProtocol < Test::Unit::TestCase
   def test_each_crlf_line
     assert_output('', '') do
-      Net::InternetMessageIO.new(StringIO.new("")).write_message("\u3042\r\n\u3044\r\n\u3046")
+      sio = StringIO.new("")
+      imio = Net::InternetMessageIO.new(sio)
+      assert_equal(23, imio.write_message("\u3042\r\u3044\n\u3046\r\n\u3048"))
+      assert_equal("\u3042\r\n\u3044\r\n\u3046\r\n\u3048\r\n.\r\n", sio.string)
+
+      sio = StringIO.new("")
+      imio = Net::InternetMessageIO.new(sio)
+      assert_equal(8, imio.write_message("\u3042\r"))
+      assert_equal("\u3042\r\n.\r\n", sio.string)
     end
   end
 end

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

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