diff options
Diffstat (limited to 'lib/yahns/stream_input.rb')
-rw-r--r-- | lib/yahns/stream_input.rb | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/yahns/stream_input.rb b/lib/yahns/stream_input.rb index 496faa2..a6190fc 100644 --- a/lib/yahns/stream_input.rb +++ b/lib/yahns/stream_input.rb @@ -43,8 +43,9 @@ class Yahns::StreamInput # :nodoc: length < 0 and raise ArgumentError, "negative length #{length} given" rv.replace(@rbuf.slice!(0, length)) else - to_read = length - @rbuf.size - rv.replace(@rbuf.slice!(0, @rbuf.size)) + cur = @rbuf.size + to_read = length - cur + cur == 0 ? rv.clear : rv.replace(@rbuf.slice!(0, cur)) until to_read == 0 || eof? || (rv.size > 0 && @chunked) @client.yahns_read(to_read, @buf) or eof! filter_body(@rbuf, @buf) |