summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-07 03:31:54 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2007-08-07 03:31:54 +0000
commitc3d19ddd691bcadbe6d22b844030fb1e7a677cd2 (patch)
treeee7aeecc7f649f5d458448bc4c973c665dfa2aac
parent2a5790e5efca261a5d629db76e9ee902b3e6aeba (diff)
downloadruby-c3d19ddd691bcadbe6d22b844030fb1e7a677cd2.tar.gz
ruby-c3d19ddd691bcadbe6d22b844030fb1e7a677cd2.tar.xz
ruby-c3d19ddd691bcadbe6d22b844030fb1e7a677cd2.zip
* io.c (pipe_open): fix for win32 platforms.
git-svn-id: http://svn.ruby-lang.org/repos/ruby/trunk@12894 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog4
-rw-r--r--io.c9
2 files changed, 8 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index b64b8b8d9..799dd81d6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Tue Aug 7 12:31:51 2007 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * io.c (pipe_open): fix for win32 platforms.
+
Tue Aug 7 02:58:33 2007 Yukihiro Matsumoto <matz@ruby-lang.org>
* bignum.c (rb_big2str0): make Bignum#to_s even faster. a patch
diff --git a/io.c b/io.c
index fabad00da..d39576c80 100644
--- a/io.c
+++ b/io.c
@@ -3061,7 +3061,7 @@ pipe_open(const char *cmd, int argc, VALUE *argv, const char *mode)
struct popen_arg arg;
#elif defined(_WIN32)
int openmode = rb_io_mode_modenum(mode);
- char *exename = NULL;
+ const char *exename = NULL;
#endif
FILE *fp = 0;
int fd = -1;
@@ -3135,9 +3135,8 @@ pipe_open(const char *cmd, int argc, VALUE *argv, const char *mode)
args[i] = RSTRING_PTR(argv[i]);
}
args[i] = NULL;
- cmd = ALLOCA_N(char, rb_w32_argv_size(args));
- rb_w32_join_argv(cmd, args);
- exename = RSTRING_PTR(prog);
+ exename = cmd;
+ cmd = rb_w32_join_argv(ALLOCA_N(char, rb_w32_argv_size(args)), args);
}
while ((pid = rb_w32_pipe_exec(cmd, exename, openmode, &fd)) == -1) {
/* exec failed */
@@ -3149,7 +3148,7 @@ pipe_open(const char *cmd, int argc, VALUE *argv, const char *mode)
rb_thread_sleep(1);
break;
default:
- rb_sys_fail(RSTRING_PTR(prog));
+ rb_sys_fail(cmd);
break;
}
}