summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/pinfo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'winsup/cygwin/pinfo.cc')
-rw-r--r--winsup/cygwin/pinfo.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc
index 367ecd187..eedb69ad5 100644
--- a/winsup/cygwin/pinfo.cc
+++ b/winsup/cygwin/pinfo.cc
@@ -124,6 +124,16 @@ pinfo::maybe_set_exit_code_from_windows ()
}
void
+pinfo::zap_cwd ()
+{
+ extern char windows_system_directory[];
+ /* Move to an innocuous location to avoid a race with other processes
+ that may want to manipulate the current directory before this
+ process has completely exited. */
+ (void) SetCurrentDirectory (windows_system_directory);
+}
+
+void
pinfo::exit (DWORD n)
{
exit_state = ES_FINAL;
@@ -144,11 +154,7 @@ pinfo::exit (DWORD n)
if (n != EXITCODE_NOSET)
{
- extern char windows_system_directory[];
- /* Move to an innocuous location to avoid a race with other processes
- that may want to manipulate the current directory before this
- process has completely exited. */
- (void) SetCurrentDirectory (windows_system_directory);
+ zap_cwd ();
self->alert_parent (0); /* Shave a little time by telling our
parent that we have now exited. */
}