Skip to content

Commit bd21e68

Browse files
committed
fix: avoid FrozenError in sysread with frozen buffers
1 parent dd1bd32 commit bd21e68

File tree

1 file changed

+2
-1
lines changed

1 file changed

+2
-1
lines changed

lib/io/stream/buffered.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -136,7 +136,8 @@ def syswrite(buffer)
136136
def sysread(size, buffer)
137137
# Come on Ruby, why couldn't this just return `nil`? EOF is not exceptional. Every file has one.
138138
while true
139-
result = @io.read_nonblock(size, buffer, exception: false)
139+
mutable_buffer = buffer&.frozen? ? buffer.dup : buffer
140+
result = @io.read_nonblock(size, mutable_buffer, exception: false)
140141

141142
case result
142143
when :wait_readable

0 commit comments

Comments
 (0)