ruby-changes:49546
From: normal <ko1@a...>
Date: Mon, 8 Jan 2018 09:34:47 +0900 (JST)
Subject: [ruby-changes:49546] normal:r61662 (trunk): net/protocol: use binary string buffers
normal 2018-01-08 09:34:42 +0900 (Mon, 08 Jan 2018) New Revision: 61662 https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=61662 Log: net/protocol: use binary string buffers Not an encoding expert, but this seems necessary for the next change. All of the IO#read, IO#read_nonblock and related methods will return a binary string when given a length argument; so anything appended to these buffers via << will be binary. Modified files: trunk/lib/net/protocol.rb Index: lib/net/protocol.rb =================================================================== --- lib/net/protocol.rb (revision 61661) +++ lib/net/protocol.rb (revision 61662) @@ -84,7 +84,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/protocol.rb#L84 @read_timeout = read_timeout @continue_timeout = continue_timeout @debug_output = debug_output - @rbuf = ''.dup + @rbuf = ''.b end attr_reader :io @@ -114,7 +114,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/protocol.rb#L114 public - def read(len, dest = ''.dup, ignore_eof = false) + def read(len, dest = ''.b, ignore_eof = false) LOG "reading #{len} bytes..." read_bytes = 0 begin @@ -134,7 +134,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/protocol.rb#L134 dest end - def read_all(dest = ''.dup) + def read_all(dest = ''.b) LOG 'reading all...' read_bytes = 0 begin @@ -193,7 +193,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/protocol.rb#L193 def rbuf_consume(len) if len == @rbuf.size s = @rbuf - @rbuf = ''.dup + @rbuf = ''.b else s = @rbuf.slice!(0, len) end @@ -340,7 +340,7 @@ module Net # :nodoc: https://github.com/ruby/ruby/blob/trunk/lib/net/protocol.rb#L340 end def using_each_crlf_line - @wbuf = ''.dup + @wbuf = ''.b yield if not @wbuf.empty? # unterminated last line write0 dot_stuff(@wbuf.chomp) + "\r\n" -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/