From b13aa0048929834caaba6aba47e70125bc436e31 Mon Sep 17 00:00:00 2001 From: Christopher Faylor Date: Thu, 21 Apr 2005 23:53:49 +0000 Subject: * 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. --- winsup/cygwin/shared.cc | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) (limited to 'winsup/cygwin/shared.cc') 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", -- cgit v1.2.3