class Zip::DecryptedIo

def read(length = nil, outbuf = +'')

def read(length = nil, outbuf = +'')
  return (length.nil? || length.zero? ? '' : nil) if eof
  while length.nil? || (buffer.bytesize < length)
    break if input_finished?
    buffer << produce_input
  end
  outbuf.replace(buffer.slice!(0...(length || output_buffer.bytesize)))
end