+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.
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)
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);