Bug #2057: Strange behavior IO#ungetc at the beginning of the stream
http://redmine.ruby-lang.org/issues/show/2057

Author: Yuki Sonoda
Status: Open, Priority: Normal
ruby -v: ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-mswin32]

Issue cloned from #1909.

--
This works:
io = File.open("a.txt", "r+")
io.read(0)
p io.pos                 # => 0
io.ungetc(100)
p io.pos                 # => 0

while this doesn't:
io = File.open("a.txt", "r+")
p io.pos                 # => 0
io.ungetc(100)           # => unread stream (IOError)

I would expect the first case to raise the same error as the second one since ungetc is supposed to shift the position back by 1 and we are at the beginning of the stream.

In ruby 1.9.1p129 (2009-05-12 revision 23412) [i386-mswin32] neither case raises an exception, which is at least consistent but still weird.


----------------------------------------
http://redmine.ruby-lang.org