aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--winsup/cygwin/ChangeLog5
-rw-r--r--winsup/cygwin/mmap.cc5
2 files changed, 8 insertions, 2 deletions
diff --git a/winsup/cygwin/ChangeLog b/winsup/cygwin/ChangeLog
index 1fa4e2c..5685b3a 100644
--- a/winsup/cygwin/ChangeLog
+++ b/winsup/cygwin/ChangeLog
@@ -1,3 +1,8 @@
+Thu Feb 8 22:09:00 2001 Corinna Vinschen <corinna@vinschen.de>
+
+ * mmap.cc (mmap): Check for reusing a mapping only on MAP_SHARED
+ and on MAP_PRIVATE|MAP_ANON in the special case of offset 0.
+
Thu Feb 8 21:57:00 2001 Corinna Vinschen <corinna@vinschen.de>
* mmap.cc (class list): Add member `hash'.
diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc
index e2eab3e..42a7b69 100644
--- a/winsup/cygwin/mmap.cc
+++ b/winsup/cygwin/mmap.cc
@@ -455,8 +455,9 @@ mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t off)
list *l = mmapped_areas->get_list_by_fd (fd);
/* First check if this mapping matches into the chunk of another
- already performed mapping. Only for MAP_SHARED mapping. */
- if (l && (flags & MAP_SHARED))
+ already performed mapping. Only valid for MAP_SHARED and for
+ MAP_ANON in a special case of MAP_PRIVATE. */
+ if (l && ((flags & MAP_SHARED) || (fd == -1 && off == 0)))
{
mmap_record *rec;
if ((rec = l->match (off, len)) != NULL)