From 9f17f2acc9b7222ff1f8397039506896c0097b29 Mon Sep 17 00:00:00 2001 From: Roman Samoilov <2270393+rsamoilov@users.noreply.github.com> Date: Mon, 19 Feb 2024 11:26:17 +0000 Subject: [PATCH] Allow to disable the `FiberScheduler#io_write` hook apparently, the presence of the `io_write` hook can cause issues on Ruby < 3.3 https://bugs.ruby-lang.org/issues/19640 https://github.com/socketry/async/pull/233 --- lib/rage/fiber_scheduler.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lib/rage/fiber_scheduler.rb b/lib/rage/fiber_scheduler.rb index 3553e64a..d5c7e833 100644 --- a/lib/rage/fiber_scheduler.rb +++ b/lib/rage/fiber_scheduler.rb @@ -49,13 +49,15 @@ def io_read(io, buffer, length, offset = 0) end end - def io_write(io, buffer, length, offset = 0) - bytes_to_write = length - bytes_to_write = buffer.size if length == 0 + unless ENV["RAGE_DISABLE_IO_WRITE"] + def io_write(io, buffer, length, offset = 0) + bytes_to_write = length + bytes_to_write = buffer.size if length == 0 - ::Iodine::Scheduler.write(io.fileno, buffer.get_string, bytes_to_write, offset) + ::Iodine::Scheduler.write(io.fileno, buffer.get_string, bytes_to_write, offset) - bytes_to_write - offset + bytes_to_write - offset + end end def kernel_sleep(duration = nil)