diff --git a/io.c b/io.c index b135f916cf..8a61940824 100644 --- a/io.c +++ b/io.c @@ -7911,8 +7911,9 @@ struct seek_arg { }; static VALUE -seek_before_access(struct seek_arg *arg) +seek_before_access(VALUE argp) { + struct seek_arg *arg = (struct seek_arg *)argp; rb_io_binmode(arg->io); return rb_io_seek(arg->io, arg->offset, arg->mode); } @@ -7964,7 +7965,7 @@ rb_io_s_read(int argc, VALUE *argv, VALUE io) sarg.io = arg.io; sarg.offset = offset; sarg.mode = SEEK_SET; - rb_protect((VALUE (*)(VALUE))seek_before_access, (VALUE)&sarg, &state); + rb_protect(seek_before_access, (VALUE)&sarg, &state); if (state) { rb_io_close(arg.io); rb_jump_tag(state);