diff options
author | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2020-08-21 00:53:08 +1200 |
---|---|---|
committer | Samuel Williams <samuel.williams@oriontransfer.co.nz> | 2020-09-14 16:44:09 +1200 |
commit | 701dcbb3ca9bf04b61cc07156608c61aaf9173f0 (patch) | |
tree | 4f732ba3b246c53a075894eb7e7758bb55e57607 /io.c | |
parent | 132453fa521cf87693035769031f3501ddc02f4a (diff) | |
download | ruby-701dcbb3ca9bf04b61cc07156608c61aaf9173f0.tar.gz |
Add support for hooking `IO#read`.
Diffstat (limited to 'io.c')
-rw-r--r-- | io.c | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -2619,6 +2619,11 @@ bufread_call(VALUE arg) static long io_fread(VALUE str, long offset, long size, rb_io_t *fptr) { + VALUE scheduler = rb_thread_current_scheduler(); + if (scheduler != Qnil && rb_scheduler_supports_io_read(scheduler)) { + return rb_scheduler_io_read(scheduler, fptr->self, str, offset, size); + } + long len; struct bufread_arg arg; @@ -8511,6 +8516,7 @@ rb_io_initialize(int argc, VALUE *argv, VALUE io) fmode |= FMODE_PREP; } MakeOpenFile(io, fp); + fp->self = io; fp->fd = fd; fp->mode = fmode; fp->encs = convconfig; |