summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-27 09:25:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-07-27 09:25:54 +0000
commitc05e6a8cda4701d995d8e4b2390ee2b88b51e6d6 (patch)
tree0b06092c19b9aed6b0591346edb050e3376ce8bd /process.c
parenta8aa1e2127e6329e2f632a2296d3f36f1c6de2ac (diff)
process.c: try conversion at redirection
* io.c (rb_io_check_io): make public. * process.c (check_exec_redirect): try conversion to IO on redirect parameters. [ruby-core:44181] [Bug #6269] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@36551 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'process.c')
-rw-r--r--process.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/process.c b/process.c
index 3aacc5d60b..16e6e6a568 100644
--- a/process.c
+++ b/process.c
@@ -1456,6 +1456,7 @@ check_exec_redirect(VALUE key, VALUE val, struct rb_execarg *eargp)
{
VALUE param;
VALUE path, flags, perm;
+ VALUE tmp;
ID id;
switch (TYPE(val)) {
@@ -1484,6 +1485,7 @@ check_exec_redirect(VALUE key, VALUE val, struct rb_execarg *eargp)
break;
case T_FILE:
+ io:
val = check_exec_redirect_fd(val, 0);
/* fall through */
case T_FIXNUM:
@@ -1531,6 +1533,9 @@ check_exec_redirect(VALUE key, VALUE val, struct rb_execarg *eargp)
break;
default:
+ tmp = val;
+ val = rb_io_check_io(tmp);
+ if (!NIL_P(val)) goto io;
rb_raise(rb_eArgError, "wrong exec redirect action");
}