John Hall wrote:

The call to CreatePipe succeeds, but the second call to _open_osfhandle
fails, with EBADF and ERROR_INVALID_HANDLE. The code does not currently
check the return code to either of the calls to _open_osfhandle.

I'm not sure why it should fail - perhaps cat closes its stdin or has
already exited - but given this is possible perhaps my fix is the
correct one.

I dont think other processes can ever close make's handles. This would be no fun with programming if you could not rely on a handle being valid until it's closed from within the program that holds it. So I would think that make closes the handle itself, anyway somewhere after the call to CreatePipe and before the call to _open_osfhandle.
I would suggest, therefore, that the version of
'close' in the  C runtime shipped with VS 2005 is stricter about
checking its arguments, which is why I see it and you don't.

MS calls it "Security Enhancements in the CRT". The functions have
built-in asserts on the parameters, like if you wrote: assert(fd >= 0); close(fd); The assert when it fails calls a hook and the default hook function raises an exception.

--- grischka



_______________________________________________
Make-w32 mailing list
Make-w32@gnu.org
http://lists.gnu.org/mailman/listinfo/make-w32

Reply via email to