summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorSutou Kouhei <[email protected]>2020-11-06 16:32:05 +0900
committerSutou Kouhei <[email protected]>2020-11-09 10:27:24 +0900
commit0cba4224889b4f4b8e20f1307a1f61d0745457c6 (patch)
tree1b445539b8a321138d545698667b52461b423565
parent8455344bf3fd92ca00f598accfe6b3eb29ddcb0c (diff)
downloadmruby-0cba4224889b4f4b8e20f1307a1f61d0745457c6.tar.gz
mruby-0cba4224889b4f4b8e20f1307a1f61d0745457c6.zip
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.
-rw-r--r--mrbgems/mruby-io/src/io.c10
1 files changed, 9 insertions, 1 deletions
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");
}