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

ruby-changes:52235

From: nagachika <ko1@a...>
Date: Sat, 18 Aug 2018 17:35:49 +0900 (JST)
Subject: [ruby-changes:52235] nagachika:r64443 (ruby_2_5): merge revision(s) 62099: [Backport #14416]

nagachika	2018-08-18 17:35:42 +0900 (Sat, 18 Aug 2018)

  New Revision: 64443

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=64443

  Log:
    merge revision(s) 62099: [Backport #14416]
    
    net/pop: make modified strings mutable
    
    Thanks to Michael Zimmerman for the bug report
    
    * lib/net/pop.rb: make modified strings mutable
      [ruby-core:85210] [Bug #14416]
    * test/net/pop/test_pop.rb: new test

  Modified directories:
    branches/ruby_2_5/
  Modified files:
    branches/ruby_2_5/lib/net/pop.rb
    branches/ruby_2_5/test/net/pop/test_pop.rb
    branches/ruby_2_5/version.h
Index: ruby_2_5/version.h
===================================================================
--- ruby_2_5/version.h	(revision 64442)
+++ ruby_2_5/version.h	(revision 64443)
@@ -1,6 +1,6 @@ https://github.com/ruby/ruby/blob/trunk/ruby_2_5/version.h#L1
 #define RUBY_VERSION "2.5.2"
 #define RUBY_RELEASE_DATE "2018-08-18"
-#define RUBY_PATCHLEVEL 81
+#define RUBY_PATCHLEVEL 82
 
 #define RUBY_RELEASE_YEAR 2018
 #define RUBY_RELEASE_MONTH 8
Index: ruby_2_5/test/net/pop/test_pop.rb
===================================================================
--- ruby_2_5/test/net/pop/test_pop.rb	(revision 64442)
+++ ruby_2_5/test/net/pop/test_pop.rb	(revision 64443)
@@ -64,6 +64,35 @@ class TestPOP < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/ruby_2_5/test/net/pop/test_pop.rb#L64
     end
   end
 
+  def test_popmail
+    # totally not representative of real messages, but
+    # enough to test frozen bugs
+    lines = [ "[ruby-core:85210]" , "[Bug #14416]" ].freeze
+    command = Object.new
+    command.instance_variable_set(:@lines, lines)
+
+    def command.retr(n)
+      @lines.each { |l| yield "#{l}\r\n" }
+    end
+
+    def command.top(number, nl)
+      @lines.each do |l|
+        yield "#{l}\r\n"
+        break if (nl -= 1) <= 0
+      end
+    end
+
+    net_pop = :unused
+    popmail = Net::POPMail.new(1, 123, net_pop, command)
+    res = popmail.pop
+    assert_equal "[ruby-core:85210]\r\n[Bug #14416]\r\n", res
+    assert_not_predicate res, :frozen?
+
+    res = popmail.top(1)
+    assert_equal "[ruby-core:85210]\r\n", res
+    assert_not_predicate res, :frozen?
+  end
+
   def pop_test(apop=false)
     host = 'localhost'
     server = TCPServer.new(host, 0)
Index: ruby_2_5/lib/net/pop.rb
===================================================================
--- ruby_2_5/lib/net/pop.rb	(revision 64442)
+++ ruby_2_5/lib/net/pop.rb	(revision 64443)
@@ -467,7 +467,7 @@ module Net https://github.com/ruby/ruby/blob/trunk/ruby_2_5/lib/net/pop.rb#L467
 
     # Provide human-readable stringification of class state.
     def inspect
-      "#<#{self.class} #{@address}:#{@port} open=#{@started}>"
+      +"#<#{self.class} #{@address}:#{@port} open=#{@started}>"
     end
 
     # *WARNING*: This method causes a serious security hole.
@@ -758,7 +758,7 @@ module Net https://github.com/ruby/ruby/blob/trunk/ruby_2_5/lib/net/pop.rb#L758
 
     # Provide human-readable stringification of class state.
     def inspect
-      "#<#{self.class} #{@number}#{@deleted ? ' deleted' : ''}>"
+      +"#<#{self.class} #{@number}#{@deleted ? ' deleted' : ''}>"
     end
 
     #
@@ -799,7 +799,7 @@ module Net https://github.com/ruby/ruby/blob/trunk/ruby_2_5/lib/net/pop.rb#L799
     #
     # This method raises a POPError if an error occurs.
     #
-    def pop( dest = '', &block ) # :yield: message_chunk
+    def pop( dest = +'', &block ) # :yield: message_chunk
       if block_given?
         @command.retr(@number, &block)
         nil
@@ -819,7 +819,7 @@ module Net https://github.com/ruby/ruby/blob/trunk/ruby_2_5/lib/net/pop.rb#L819
     # The optional +dest+ argument is obsolete.
     #
     # This method raises a POPError if an error occurs.
-    def top(lines, dest = '')
+    def top(lines, dest = +'')
       @command.top(@number, lines) do |chunk|
         dest << chunk
       end
@@ -831,7 +831,7 @@ module Net https://github.com/ruby/ruby/blob/trunk/ruby_2_5/lib/net/pop.rb#L831
     # The optional +dest+ argument is obsolete.
     #
     # This method raises a POPError if an error occurs.
-    def header(dest = '')
+    def header(dest = +'')
       top(0, dest)
     end
 
@@ -898,7 +898,7 @@ module Net https://github.com/ruby/ruby/blob/trunk/ruby_2_5/lib/net/pop.rb#L898
     attr_reader :socket
 
     def inspect
-      "#<#{self.class} socket=#{@socket}>"
+      +"#<#{self.class} socket=#{@socket}>"
     end
 
     def auth(account, password)
Index: ruby_2_5
===================================================================
--- ruby_2_5	(revision 64442)
+++ ruby_2_5	(revision 64443)

Property changes on: ruby_2_5
___________________________________________________________________
Modified: svn:mergeinfo
## -0,0 +0,1 ##
   Merged /trunk:r62099

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

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