diff options
Diffstat (limited to 'mrblib/io.rb')
| -rw-r--r-- | mrblib/io.rb | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/mrblib/io.rb b/mrblib/io.rb index 902d847d2..fceea1171 100644 --- a/mrblib/io.rb +++ b/mrblib/io.rb @@ -171,11 +171,16 @@ class IO end def read(length = nil) - unless length.nil? or length.class == Fixnum - raise TypeError.new "can't convert #{length.class} into Integer" - end - if length && length < 0 - raise ArgumentError.new "negative length: #{length} given" + unless length.nil? + unless length.is_a? Fixnum + raise TypeError.new "can't convert #{length.class} into Integer" + end + if length < 0 + raise ArgumentError.new "negative length: #{length} given" + end + if length == 0 + return "" # easy case + end end str = '' |
