diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index a3cf7184f..a357ef49f 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,13 @@ +2003-12-26 Christopher Faylor + + * exceptions.cc (try_to_debug): Fix off-by-one problem when resetting + environment variable after error_start detected. + + * fhandler_tty_slave.cc (fhandler_tty_slave::close): Clarify debug + message. + * syscalls.cc (setsid): Don't increment usecount here, since it will be + automatically decremented on close. + 2003-12-26 Christopher Faylor * exceptions.cc (setup_handler): Protect against a race. diff --git a/winsup/cygwin/exceptions.cc b/winsup/cygwin/exceptions.cc index 228d2c8e2..97955307b 100644 --- a/winsup/cygwin/exceptions.cc +++ b/winsup/cygwin/exceptions.cc @@ -350,12 +350,15 @@ try_to_debug (bool waitloop) char* rawenv = GetEnvironmentStrings () ; for (char* p = rawenv; *p != '\0'; p = strchr (p, '\0') + 1) { - if (strncmp (p, "CYGWIN=", sizeof ("CYGWIN=") - 1) == 0) + if (strncmp (p, "CYGWIN=", strlen ("CYGWIN=")) == 0) { char* q = strstr (p, "error_start") ; /* replace 'error_start=...' with '_rror_start=...' */ - if (q) *q = '_' ; - SetEnvironmentVariable ("CYGWIN", p + sizeof ("CYGWIN=")) ; + if (q) + { + *q = '_' ; + SetEnvironmentVariable ("CYGWIN", p + strlen ("CYGWIN=")) ; + } break ; } } diff --git a/winsup/cygwin/fhandler_tty.cc b/winsup/cygwin/fhandler_tty.cc index 60b12a939..d5cbcadd1 100644 --- a/winsup/cygwin/fhandler_tty.cc +++ b/winsup/cygwin/fhandler_tty.cc @@ -620,7 +620,7 @@ fhandler_tty_slave::close () if (archetype->usecount < 0) system_printf ("usecount %d", archetype->usecount); #endif - termios_printf ("just exiting because archetype usecount is > 0"); + termios_printf ("just returning because archetype usecount is > 0"); return 0; } diff --git a/winsup/cygwin/syscalls.cc b/winsup/cygwin/syscalls.cc index 2b2e97d85..ab8aeea00 100644 --- a/winsup/cygwin/syscalls.cc +++ b/winsup/cygwin/syscalls.cc @@ -335,7 +335,7 @@ setsid (void) myself->pgid, myself->ctty, fhandler_console::open_fhs); if (cygheap->ctty) { - if (!--cygheap->ctty->usecount) + if (cygheap->ctty->usecount == 1) cygheap->ctty->close (); cygheap->ctty = NULL; }