summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog4
-rw-r--r--process.c7
2 files changed, 8 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index eeb4853cd4..69af0bdc00 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Sat Mar 14 15:59:04 2009 Tanaka Akira <akr@fsij.org>
+
+ * process.c (rb_spawn_internal): use int variable for status.
+
Sat Mar 14 14:45:51 2009 Tanaka Akira <akr@fsij.org>
* process.c (rb_f_system): use rb_pid_t for pid.
diff --git a/process.c b/process.c
index 1b9380aecb..a33133c4c8 100644
--- a/process.c
+++ b/process.c
@@ -2838,6 +2838,7 @@ rb_spawn_internal(int argc, VALUE *argv, int default_close_others,
char *errmsg, size_t errmsg_buflen)
{
rb_pid_t pid;
+ int status;
VALUE prog;
struct rb_exec_arg earg;
#if !defined HAVE_FORK
@@ -2852,7 +2853,7 @@ rb_spawn_internal(int argc, VALUE *argv, int default_close_others,
rb_exec_arg_fixup(&earg);
#if defined HAVE_FORK
- pid = rb_fork_err(&pid, rb_exec_atfork, &earg, earg.redirect_fds, errmsg, errmsg_buflen);
+ pid = rb_fork_err(&status, rb_exec_atfork, &earg, earg.redirect_fds, errmsg, errmsg_buflen);
if (prog && earg.argc) earg.argv[0] = prog;
#else
if (rb_run_exec_options_err(&earg, &sarg, errmsg, errmsg_buflen) < 0) {
@@ -2875,8 +2876,8 @@ rb_spawn_internal(int argc, VALUE *argv, int default_close_others,
# endif
# else
if (argc) prog = rb_ary_join(rb_ary_new4(argc, argv), rb_str_new2(" "));
- pid = system(StringValuePtr(prog));
- rb_last_status_set((pid & 0xff) << 8, 0);
+ status = system(StringValuePtr(prog));
+ rb_last_status_set((status & 0xff) << 8, 0);
# endif
rb_run_exec_options_err(&sarg, NULL, errmsg, errmsg_buflen);