diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 9fff7adc3..942b38bcf 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,10 @@ +2005-08-24 Christopher Faylor + + * fhandler_virtual.cc (fhandler_virtual::close): Don't free filebuf if + it's NULL. + * pinfo.cc (_pinfo::commune_send): Fix test for incorrect number of + bytes read from pipe. + 2005-08-24 Corinna Vinschen * syscalls.cc (endusershell): Reset shell_fp to NULL to allow diff --git a/winsup/cygwin/fhandler_virtual.cc b/winsup/cygwin/fhandler_virtual.cc index ab078d616..494e81c58 100644 --- a/winsup/cygwin/fhandler_virtual.cc +++ b/winsup/cygwin/fhandler_virtual.cc @@ -169,8 +169,11 @@ fhandler_virtual::close () { if (!hExeced) { - cfree (filebuf); - filebuf = NULL; + if (filebuf) + { + cfree (filebuf); + filebuf = NULL; + } bufalloc = (size_t) -1; } return 0; diff --git a/winsup/cygwin/pinfo.cc b/winsup/cygwin/pinfo.cc index babed0cde..1a08f575b 100644 --- a/winsup/cygwin/pinfo.cc +++ b/winsup/cygwin/pinfo.cc @@ -731,13 +731,13 @@ _pinfo::commune_send (DWORD code, ...) char *p; for (p = res.s; n && ReadFile (fromthem, p, n, &nr, NULL); p += nr, n -= nr) continue; - if ((unsigned) (p - res.s) != n) + if (n) { __seterrno (); goto err; } + res.n = p - res.s; } - res.n = n; break; case PICOM_FIFO: {