Project

General

Profile

Bug #13675

Should Zlib::GzipReader#ungetc accept nil?

Added by Eregon (Benoit Daloze) about 2 years ago. Updated over 1 year ago.

Status:
Open
Priority:
Normal
Assignee:
-
Target version:
-
ruby -v:
ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-linux]
[ruby-core:81752]

Description

IO#ungetc accepts nil and just does nothing:

p File.new(__FILE__).ungetc(nil)

But on a GzipReader it fails:

require 'zlib'
zip = "\x1F\x8B\b\x00,\xDC\xD1G\x00\x0334261MLJNI\x05\x00\x9D\x05\x00$\n\x00\x00\x00"
io = StringIO.new zip
gz = Zlib::GzipReader.new(io)
p gz.ungetc(nil)
# =>
repro.rb:8:in `ungetc': no implicit conversion of nil into String (TypeError)
    from repro.rb:8:in `<main>'

Should Zlib::GzipReader#ungetc accept nil?
Or should IO#ungetc also raise when given nil?

Discovered in https://github.com/jruby/jruby/pull/4636#issuecomment-305325839

History

Updated by shevegen (Robert A. Heiler) about 2 years ago

I like symmetry. :)

Updated by matz (Yukihiro Matsumoto) over 1 year ago

Making Zlib::GzipReader#ungetc accept nil does not help anybody. You should keep as it is.
I am not sure if we should fix IO#ungetc or not (yet). Let me consider.

Matz.

Updated by Eregon (Benoit Daloze) over 1 year ago

matz (Yukihiro Matsumoto) wrote:

Making Zlib::GzipReader#ungetc accept nil does not help anybody. You should keep as it is.

Agreed.

I am not sure if we should fix IO#ungetc or not (yet). Let me consider.

I think we should, it seems a bug to me.

Also available in: Atom PDF