From 7416d0b4887aa57aa67e0b3461f0012ddef91cfa Mon Sep 17 00:00:00 2001 From: Samuel Williams Date: Sat, 11 Dec 2021 18:18:15 +1300 Subject: [PATCH] Prefer wait_readable for fiber scheduler. --- lib/reline/ansi.rb | 2 +- lib/reline/general_io.rb | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/reline/ansi.rb b/lib/reline/ansi.rb index c7c1eaf133..65e0021fa4 100644 --- a/lib/reline/ansi.rb +++ b/lib/reline/ansi.rb @@ -147,7 +147,7 @@ def self.inner_getc unless @@buf.empty? return @@buf.shift end - until c = @@input.raw(intr: true) { select([@@input], [], [], 0.1) && @@input.getbyte } + until c = @@input.raw(intr: true) { @@input.wait_readable(0.1) && @@input.getbyte } Reline.core.line_editor.resize end (c == 0x16 && @@input.raw(min: 0, tim: 0, &:getbyte)) || c diff --git a/lib/reline/general_io.rb b/lib/reline/general_io.rb index 5df346882a..3fafad5c6e 100644 --- a/lib/reline/general_io.rb +++ b/lib/reline/general_io.rb @@ -1,4 +1,5 @@ require 'timeout' +require 'io/wait' class Reline::GeneralIO def self.reset(encoding: nil) @@ -36,7 +37,7 @@ def self.getc end c = nil loop do - result = select([@@input], [], [], 0.1) + result = @@input.wait_readable(0.1) next if result.nil? c = @@input.read(1) break