Remove support for passing nil to IO#ungetc

Fixes [Bug #13675]
This commit is contained in:
Jeremy Evans 2019-08-25 11:25:41 -07:00
Родитель 229ba1215f
Коммит 54499d7810
2 изменённых файлов: 13 добавлений и 5 удалений

1
io.c
Просмотреть файл

@ -4350,7 +4350,6 @@ rb_io_ungetc(VALUE io, VALUE c)
GetOpenFile(io, fptr);
rb_io_check_char_readable(fptr);
if (NIL_P(c)) return Qnil;
if (FIXNUM_P(c)) {
c = rb_enc_uint_chr(FIX2UINT(c), io_read_encoding(fptr));
}

Просмотреть файл

@ -103,10 +103,19 @@ describe "IO#ungetc" do
-> { @io.sysread(1) }.should raise_error(IOError)
end
it "does not affect the stream and returns nil when passed nil" do
@io.getc.should == ?V
@io.ungetc(nil)
@io.getc.should == ?o
ruby_version_is "0"..."2.8" do
it "does not affect the stream and returns nil when passed nil" do
@io.getc.should == ?V
@io.ungetc(nil)
@io.getc.should == ?o
end
end
ruby_version_is "2.8" do
it "raises TypeError if passed nil" do
@io.getc.should == ?V
proc{@io.ungetc(nil)}.should raise_error(TypeError)
end
end
it "puts one or more characters back in the stream" do