From 0cba4224889b4f4b8e20f1307a1f61d0745457c6 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 6 Nov 2020 16:32:05 +0900 Subject: Don't check FD for STDIN/STDOUT/STDERR; #5114 We don't need to require valid STDIN/STDOUT/STDERR. If we require it, we can't use mruby on an environment that doesn't have valid STDIN/STDOUT/STDERR such as Windows service process. Windows service process doesn't have valid STDIN. --- mrbgems/mruby-io/src/io.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/mrbgems/mruby-io/src/io.c b/mrbgems/mruby-io/src/io.c index d4505e4f7..54a806091 100644 --- a/mrbgems/mruby-io/src/io.c +++ b/mrbgems/mruby-io/src/io.c @@ -707,7 +707,15 @@ mrb_io_initialize(mrb_state *mrb, mrb_value io) mode = opt = mrb_nil_value(); mrb_get_args(mrb, "i|oo", &fd, &mode, &opt); - check_file_descriptor(mrb, fd); + switch (fd) { + case 0: /* STDIN_FILENO */ + case 1: /* STDOUT_FILENO */ + case 2: /* STDERR_FILENO */ + break; + default: + check_file_descriptor(mrb, fd); + break; + } if (mrb_nil_p(mode)) { mode = mrb_str_new_cstr(mrb, "r"); } -- cgit v1.2.3