[svn] Fix fake_fork error handling for Windows 98.

Patch by David Fritz.
This commit is contained in:
hniksic 2004-03-25 11:18:54 -08:00
parent a633f27a99
commit bf4ae09b22
2 changed files with 11 additions and 9 deletions

View File

@ -1,3 +1,9 @@
2004-03-25 David Fritz <zeroxdf@att.net>
* mswindows.c (fake_fork_child): Ignore error code when
OpenFileMapping() fails; assume it failed because the object does
not exist.
2004-03-24 David Fritz <zeroxdf@att.net>
* mswindows.c (fake_fork): New function.

View File

@ -158,19 +158,15 @@ fake_fork_child (void)
HANDLE section, event;
struct fake_fork_info *info;
char *name;
DWORD le;
name = make_section_name (GetCurrentProcessId ());
section = OpenFileMapping (FILE_MAP_WRITE, FALSE, name);
le = GetLastError ();
xfree (name);
/* It seems that Windows 9x and NT set last-error inconsistently when
OpenFileMapping() fails; so we assume it failed because the section
object does not exist. */
if (!section)
{
if (le == ERROR_FILE_NOT_FOUND)
return 0; /* Section object does not exist; we are the parent. */
else
return -1;
}
return 0; /* We are the parent. */
info = MapViewOfFile (section, FILE_MAP_WRITE, 0, 0, 0);
if (!info)
@ -258,7 +254,7 @@ fake_fork (void)
if (!event)
return;
/* Creat the child process detached form the current console and in a
/* Create the child process detached form the current console and in a
suspended state. */
memset (&si, 0, sizeof (si));
si.cb = sizeof (si);