* pipe.cc (create_selectable_pipe): Work around bug in Windows 95

where CreateNamedPipe returns NULL.
This commit is contained in:
Corinna Vinschen 2004-09-09 08:58:44 +00:00
parent bbb5869af9
commit 6423296840
2 changed files with 9 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2004-09-09 Bas van Gompel <cygwin-patch.buzz@bavag.tmfweb.nl>
* pipe.cc (create_selectable_pipe): Work around bug in Windows 95
where CreateNamedPipe returns NULL.
2004-09-08 Pierre Humblet <pierre.humblet@ieee.org> 2004-09-08 Pierre Humblet <pierre.humblet@ieee.org>
* cygheap.h (cwdstuff::drive_length): New member. * cygheap.h (cwdstuff::drive_length): New member.

View File

@ -259,6 +259,7 @@ create_selectable_pipe (PHANDLE read_pipe_ptr,
the pipe was not created earlier by some other process, even if the pipe was not created earlier by some other process, even if
the pid has been reused. We avoid FILE_FLAG_FIRST_PIPE_INSTANCE the pid has been reused. We avoid FILE_FLAG_FIRST_PIPE_INSTANCE
because that is only available for Win2k SP2 and WinXP. */ because that is only available for Win2k SP2 and WinXP. */
SetLastError (0);
read_pipe = CreateNamedPipe (pipename, read_pipe = CreateNamedPipe (pipename,
PIPE_ACCESS_INBOUND, PIPE_ACCESS_INBOUND,
PIPE_TYPE_BYTE | PIPE_READMODE_BYTE, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE,
@ -268,13 +269,14 @@ create_selectable_pipe (PHANDLE read_pipe_ptr,
NMPWAIT_USE_DEFAULT_WAIT, NMPWAIT_USE_DEFAULT_WAIT,
sa_ptr); sa_ptr);
if (read_pipe != INVALID_HANDLE_VALUE) DWORD err = GetLastError ();
/* Win 95 seems to return NULL instead of INVALID_HANDLE_VALUE */
if ((read_pipe || !err) && read_pipe != INVALID_HANDLE_VALUE)
{ {
debug_printf ("pipe read handle %p", read_pipe); debug_printf ("pipe read handle %p", read_pipe);
break; break;
} }
DWORD err = GetLastError ();
switch (err) switch (err)
{ {
case ERROR_PIPE_BUSY: case ERROR_PIPE_BUSY: