diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 4002c942b..34e5b7558 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2005-01-13 Corinna Vinschen + + * pinfo.cc (pinfo::exit): Don't access self after releasing it. + * path.h (path_conv::path_conv): Fill path with native device + name in case of device argument. + 2005-01-13 Corinna Vinschen * fhandler_serial.cc (fhandler_serial::dup): Call overlapped_setup diff --git a/winsup/cygwin/path.h b/winsup/cygwin/path.h index 743246f9e..569d4560d 100644 --- a/winsup/cygwin/path.h +++ b/winsup/cygwin/path.h @@ -169,7 +169,10 @@ class path_conv const suffix_info *suffixes = NULL) __attribute__ ((regparm(3))); path_conv (const device& in_dev): fileattr (INVALID_FILE_ATTRIBUTES), - path_flags (0), known_suffix (NULL), error (0), dev (in_dev) {} + path_flags (0), known_suffix (NULL), error (0), dev (in_dev) + { + strcpy (path, in_dev.native); + } path_conv (int, const char *src, unsigned opt = PC_SYM_FOLLOW, const suffix_info *suffixes = NULL) diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index 37821262d..c9f40d078 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -140,13 +140,14 @@ pinfo::exit (DWORD n) set_exit_state (PID_EXITED); if (n != EXITCODE_EXEC) self->alert_parent (0); + int exitcode = self->exitcode; release (); _my_tls.stacklock = 0; _my_tls.stackptr = _my_tls.stack; sigproc_printf ("Calling ExitProcess hProcess %p, n %p, exitcode %p", - hProcess, n, self->exitcode); - ExitProcess (self->exitcode); + hProcess, n, exitcode); + ExitProcess (exitcode); } # undef self