aboutsummaryrefslogtreecommitdiff
path: root/winsup
diff options
context:
space:
mode:
authorChristopher Faylor <me@cgf.cx>2005-01-02 00:34:55 +0000
committerChristopher Faylor <me@cgf.cx>2005-01-02 00:34:55 +0000
commitd8c83adc04c2a7c13dd9a562189e049ea4c11a56 (patch)
treefe1df5aa84de764e64b45e97bc78c2f27ce49a74 /winsup
parentf8316b46dd876638049f1e33e37db9ce5e697ef4 (diff)
downloadnewlib-d8c83adc04c2a7c13dd9a562189e049ea4c11a56.zip
newlib-d8c83adc04c2a7c13dd9a562189e049ea4c11a56.tar.gz
newlib-d8c83adc04c2a7c13dd9a562189e049ea4c11a56.tar.bz2
* shared.cc (open_shared): Don't attempt VirtualAlloc magic if first attempt to
map memory fails.
Diffstat (limited to 'winsup')
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/shared.cc5
2 files changed, 8 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index ab702db..26d3a35 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+2005-01-01 Christopher Faylor <cgf@timesys.com>
+
+ * shared.cc (open_shared): Don't attempt VirtualAlloc magic if first
+ attempt to map memory fails.
+
2004-12-30 Christopher Faylor <cgf@timesys.com>
* devices.cc (device::isfs): Return true for the logical case of
diff --git a/winsup/cygwin/shared.cc b/winsup/cygwin/shared.cc
index b276f92..0e7ae1b 100644
--- a/winsup/cygwin/shared.cc
+++ b/winsup/cygwin/shared.cc
@@ -79,7 +79,7 @@ open_shared (const char *name, int n, HANDLE &shared_h, DWORD size,
void *shared;
void *addr;
- if (!wincap.needs_memory_protection ())
+ if (!wincap.needs_memory_protection () && offsets[0])
addr = NULL;
else
{
@@ -116,12 +116,13 @@ open_shared (const char *name, int n, HANDLE &shared_h, DWORD size,
if (wincap.is_winnt ())
system_printf ("relocating shared object %s(%d) from %p to %p on Windows NT", name, n, addr, shared);
#endif
+ offsets[0] = NULL;
}
if (!shared)
api_fatal ("MapViewOfFileEx '%s'(%p), %E. Terminating.", name, shared_h);
- if (m == SH_CYGWIN_SHARED && wincap.needs_memory_protection ())
+ if (m == SH_CYGWIN_SHARED && offsets[0] && wincap.needs_memory_protection ())
{
unsigned delta = (char *) shared - offsets[0];
offsets[0] = (char *) shared;