summaryrefslogtreecommitdiffhomepage
path: root/mrblib/io.rb
diff options
context:
space:
mode:
Diffstat (limited to 'mrblib/io.rb')
-rw-r--r--mrblib/io.rb27
1 files changed, 6 insertions, 21 deletions
diff --git a/mrblib/io.rb b/mrblib/io.rb
index 4bcf4f800..8408aea87 100644
--- a/mrblib/io.rb
+++ b/mrblib/io.rb
@@ -133,20 +133,12 @@ class IO
end
def eof?
- return true if @buf && @buf.size > 0
-
- ret = false
- char = ''
-
begin
- char = sysread(1)
- rescue EOFError => e
- ret = true
- ensure
- _ungets(char)
+ buf = _read_buf
+ return buf.size == 0
+ rescue EOFError
+ return true
end
-
- ret
end
alias_method :eof, :eof?
@@ -176,24 +168,17 @@ class IO
@buf = sysread(BUF_SIZE)
end
- def _ungets(substr)
+ def ungetc(substr)
raise TypeError.new "expect String, got #{substr.class}" unless substr.is_a?(String)
- raise IOError if @pos == 0 || @pos.nil?
@pos -= substr.size
if @buf.empty?
- @buf = substr
+ @buf = substr.dup
else
@buf = substr + @buf
end
nil
end
- def ungetc(char)
- raise IOError if @pos == 0 || @pos.nil?
- _ungets(char)
- nil
- end
-
def read(length = nil)
unless length.nil?
unless length.is_a? Fixnum