Skip to content

Commit 9b47742

Browse files
committed
Fix StringIO#read_nonblock(exception: false) with EOF
1 parent c69227f commit 9b47742

File tree

1 file changed

+11
-4
lines changed

1 file changed

+11
-4
lines changed

lib/truffle/stringio.rb

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -390,7 +390,7 @@ def puts(*args)
390390
Truffle::IOOperations.puts(self, *args)
391391
end
392392

393-
def read(length=nil, buffer=nil)
393+
def read(length = nil, buffer = nil)
394394
check_readable
395395
d = @__data__
396396
pos = d.pos
@@ -522,7 +522,7 @@ def sync=(val)
522522
val
523523
end
524524

525-
def sysread(length=nil, buffer='')
525+
def sysread(length = nil, buffer = '')
526526
str = read(length, buffer)
527527

528528
if str.nil?
@@ -535,8 +535,15 @@ def sysread(length=nil, buffer='')
535535

536536
alias_method :readpartial, :sysread
537537

538-
def read_nonblock(length, buffer='', **options)
539-
sysread(length, buffer)
538+
def read_nonblock(length, buffer = '', exception: true)
539+
str = read(length, buffer)
540+
541+
if exception and str.nil?
542+
buffer.clear
543+
raise EOFError, 'end of file reached'
544+
end
545+
546+
str
540547
end
541548

542549
def tell

0 commit comments

Comments
 (0)