diff options
-rw-r--r-- | winsup/cygwin/ChangeLog | 6 | ||||
-rw-r--r-- | winsup/cygwin/shared.cc | 16 |
2 files changed, 13 insertions, 9 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog index 264f78743..ee3c3fb31 100644 --- a/winsup/cygwin/ChangeLog +++ b/winsup/cygwin/ChangeLog @@ -1,3 +1,9 @@ +2005-04-21 Christopher Faylor <cgf@timesys.com> + + * shared.cc (shared_info::initialize): Test previous version of shared + memory magic rather than current version when determining if there has + been a shared memory mismatch. + 2005-04-20 Christopher Faylor <cgf@timesys.com> * sigproc.cc (proc_subproc): Fix handling of waiting for pids with zero diff --git a/winsup/cygwin/shared.cc b/winsup/cygwin/shared.cc index 3d6fddb74..48caefff0 100644 --- a/winsup/cygwin/shared.cc +++ b/winsup/cygwin/shared.cc @@ -195,17 +195,12 @@ void shared_info::initialize () { DWORD sversion = (DWORD) InterlockedExchange ((LONG *) &version, SHARED_VERSION_MAGIC); - if (!sversion) - { - /* Initialize tty table. */ - tty.init (); - } - else + if (sversion) { - if (version != SHARED_VERSION_MAGIC) + if (sversion != SHARED_VERSION_MAGIC) { - multiple_cygwin_problem ("system shared memory version", version, SHARED_VERSION_MAGIC); InterlockedExchange ((LONG *) &version, sversion); + multiple_cygwin_problem ("system shared memory version", sversion, SHARED_VERSION_MAGIC); } while (!cb) low_priority_sleep (0); // Should be hit only very very rarely @@ -214,7 +209,10 @@ shared_info::initialize () heap_init (); if (!sversion) - cb = sizeof (*this); // Do last, after all shared memory initializion + { + tty.init (); /* Initialize tty table. */ + cb = sizeof (*this); /* Do last, after all shared memory initialization */ + } if (cb != SHARED_INFO_CB) system_printf ("size of shared memory region changed from %u to %u", |