summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--win32/win32.c10
2 files changed, 11 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dc52f35109..5a9bd74c03 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@ Tue Oct 21 15:08:53 2003 NAKAMURA Usaku <usa@ruby-lang.org>
* win32/win32.c (do_spawn, do_aspawn): should wait child process even
if callded with P_OVERLAY.
+ * win32/win32.c (do_spawn, do_aspawn): should return child's exit
+ status to parent.
+
Tue Oct 21 00:35:02 2003 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
* test/soap/calc/*, test/soap/helloworld/*: catch the exception from
diff --git a/win32/win32.c b/win32/win32.c
index cbcecb6f8e..c85b1b48e8 100644
--- a/win32/win32.c
+++ b/win32/win32.c
@@ -735,6 +735,7 @@ int mode;
char *cmd;
{
struct ChildRecord *child;
+ DWORD exitcode;
switch (mode) {
case P_WAIT:
@@ -759,7 +760,9 @@ char *cmd;
return child->pid;
case P_OVERLAY:
WaitForSingleObject(child->hProcess, INFINITE);
- exit(0);
+ GetExitCodeProcess(child->hProcess, &exitcode);
+ CloseChildHandle(child);
+ _exit(exitcode);
default:
return -1; /* not reached */
}
@@ -774,6 +777,7 @@ char **argv;
char *cmd, *p, *q, *s, **t;
int len, n, bs, quote;
struct ChildRecord *child;
+ DWORD exitcode;
switch (mode) {
case P_WAIT:
@@ -850,7 +854,9 @@ char **argv;
return child->pid;
case P_OVERLAY:
WaitForSingleObject(child->hProcess, INFINITE);
- exit(0);
+ GetExitCodeProcess(child->hProcess, &exitcode);
+ CloseChildHandle(child);
+ _exit(exitcode);
default:
return -1; /* not reached */
}