aboutsummaryrefslogtreecommitdiffstats
path: root/lib/openssl/buffering.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/openssl/buffering.rb')
-rw-r--r--lib/openssl/buffering.rb14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/openssl/buffering.rb b/lib/openssl/buffering.rb
index f07e5bc..95afd78 100644
--- a/lib/openssl/buffering.rb
+++ b/lib/openssl/buffering.rb
@@ -36,28 +36,32 @@ module Buffering
end
end
- def consume_rbuff(size=nil)
+ def consume_rbuff(size=nil, str=nil)
if @rbuffer.size == 0
@eof = nil
nil
else
size = @rbuffer.size unless size
- ret = @rbuffer[0, size]
+ if str
+ str[0, str.size] = @rbuffer[0, size]
+ else
+ str = @rbuffer[0, size]
+ end
@rbuffer[0, size] = ""
- ret
+ str
end
end
public
- def read(size=nil)
+ def read(size=nil, str=nil)
fill_rbuff unless defined? @rbuffer
@eof ||= nil
until @eof
break if size && size <= @rbuffer.size
fill_rbuff
end
- consume_rbuff(size)
+ consume_rbuff(size, str)
end
def gets(eol=$/)