summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog5
-rw-r--r--process.c4
2 files changed, 9 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 684055396..e7c6b15a6 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Fri Apr 25 15:35:36 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
+
+ * process.c (rb_spawn): rb_exec_initarg() returns new argc and argv in
+ earg.
+
Fri Apr 25 12:37:54 2008 Nobuyoshi Nakada <nobu@ruby-lang.org>
* array.c (flatten): returns an instance of same class.
diff --git a/process.c b/process.c
index 666743d68..3ffd6d353 100644
--- a/process.c
+++ b/process.c
@@ -2557,6 +2557,8 @@ rb_spawn(int argc, VALUE *argv)
status = rb_fork(&status, rb_exec_atfork, &earg, earg.redirect_fds);
if (prog && earg.argc) earg.argv[0] = prog;
#elif defined HAVE_SPAWNV
+ argc = earg.argc;
+ argv = earg.argv;
if (!argc) {
status = proc_spawn(RSTRING_PTR(prog));
}
@@ -2565,6 +2567,8 @@ rb_spawn(int argc, VALUE *argv)
}
if (prog && argc) argv[0] = prog;
#else
+ argc = earg.argc;
+ argv = earg.argv;
if (prog && argc) argv[0] = prog;
if (argc) prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
status = system(StringValuePtr(prog));