* cygmagic: Add define name to warning.
* dcrt0.cc (_dll_crt0): Check for changes in child_info size. (multiple_cygwin_problem): Avoid "proc" errors when testing. Just assume new cygwin proc. * shared_info.h (mount_info): Add 'cb' element for sanity checks. (shared_info): Ditto. * child_info.h (child_info): Add fhandler_union_size element for sanity checking. * shared.cc (open_shared): Detect shared region size mismatch between parent and child. (shared_info::initialize): Detect shared region size mismatch with expectation. (memory_Init): Ditto. * sigproc.cc (init_child_info): Correctly set cb in passed structure. * shared.cc (open_shared):
This commit is contained in:
@@ -103,10 +103,12 @@ open_shared (const char *name, int n, HANDLE &shared_h, DWORD size, void *addr)
|
||||
void
|
||||
shared_info::initialize ()
|
||||
{
|
||||
if (inited)
|
||||
if (version)
|
||||
{
|
||||
if (inited != SHARED_VERSION_MAGIC)
|
||||
multiple_cygwin_problem ("shared", inited, SHARED_VERSION);
|
||||
if (version != SHARED_VERSION_MAGIC)
|
||||
multiple_cygwin_problem ("shared", version, SHARED_VERSION);
|
||||
else if (cb != SHARED_INFO_CB)
|
||||
multiple_cygwin_problem ("shared size", cb, SHARED_INFO_CB);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -115,7 +117,11 @@ shared_info::initialize ()
|
||||
|
||||
/* Initialize tty table. */
|
||||
tty.init ();
|
||||
inited = SHARED_VERSION_MAGIC;
|
||||
version = SHARED_VERSION_MAGIC;
|
||||
cb = sizeof (*this);
|
||||
if (cb != SHARED_INFO_CB)
|
||||
system_printf ("size of shared memory region changed from %u to %u",
|
||||
SHARED_INFO_CB, cb);
|
||||
}
|
||||
|
||||
void __stdcall
|
||||
@@ -162,10 +168,16 @@ memory_init ()
|
||||
{
|
||||
mount_table->version = MOUNT_VERSION_MAGIC;
|
||||
debug_printf ("initializing mount table");
|
||||
mount_table->cb = sizeof (*mount_table);
|
||||
if (mount_table->cb != MOUNT_INFO_CB)
|
||||
system_printf ("size of mount table region changed from %u to %u",
|
||||
MOUNT_INFO_CB, mount_table->cb);
|
||||
mount_table->init (); /* Initialize the mount table. */
|
||||
}
|
||||
else if (mount_table->version != MOUNT_VERSION_MAGIC)
|
||||
multiple_cygwin_problem ("mount", mount_table->version, MOUNT_VERSION);
|
||||
else if (mount_table->cb != MOUNT_INFO_CB)
|
||||
multiple_cygwin_problem ("mount table size", mount_table->cb, MOUNT_INFO_CB);
|
||||
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user