Merge pull request #61 from JustinLove/split_sep
read boundaries could break a multi-character gets terminator
This commit is contained in:
		
						commit
						a64b01fe96
					
				|  | @ -83,7 +83,7 @@ module IOExtras  #:nodoc: | ||||||
| 
 | 
 | ||||||
|       bufferIndex = 0 |       bufferIndex = 0 | ||||||
|       while ((matchIndex = @outputBuffer.index(aSepString, bufferIndex)) == nil) |       while ((matchIndex = @outputBuffer.index(aSepString, bufferIndex)) == nil) | ||||||
|         bufferIndex = @outputBuffer.bytesize |         bufferIndex = [bufferIndex, @outputBuffer.bytesize - aSepString.bytesize].max | ||||||
|         if input_finished? |         if input_finished? | ||||||
|           return @outputBuffer.empty? ? nil : flush |           return @outputBuffer.empty? ? nil : flush | ||||||
|         end |         end | ||||||
|  |  | ||||||
|  | @ -75,6 +75,18 @@ class AbstractInputStreamTest < Test::Unit::TestCase | ||||||
|     assert_equal("o world#{$/}this is the second l", @io.gets("d l")) |     assert_equal("o world#{$/}this is the second l", @io.gets("d l")) | ||||||
|   end |   end | ||||||
| 
 | 
 | ||||||
|  |   LONG_LINES = [ | ||||||
|  |     'x'*48 + "\r\n", | ||||||
|  |     'y'*49 + "\r\n", | ||||||
|  |     'rest', | ||||||
|  |   ] | ||||||
|  |   def test_getsMulitCharSeperator_split | ||||||
|  |     io = TestAbstractInputStream.new(LONG_LINES.join) | ||||||
|  |     assert_equal(LONG_LINES[0], io.gets("\r\n")) | ||||||
|  |     assert_equal(LONG_LINES[1], io.gets("\r\n")) | ||||||
|  |     assert_equal(LONG_LINES[2], io.gets("\r\n")) | ||||||
|  |   end | ||||||
|  | 
 | ||||||
|   def test_each_line |   def test_each_line | ||||||
|     lineNumber=0 |     lineNumber=0 | ||||||
|     @io.each_line { |     @io.each_line { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue