diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2001-02-08 21:10:45 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2001-02-08 21:10:45 +0000 |
commit | 889109ab1f067163550437c266efb53710c74ab9 (patch) | |
tree | 3e66d9ae9d3dc144b4162dc33568841dca4895ad /winsup/cygwin/mmap.cc | |
parent | db49d0b5300479a392dee7129049b387f0a7895c (diff) | |
download | newlib-889109ab1f067163550437c266efb53710c74ab9.zip newlib-889109ab1f067163550437c266efb53710c74ab9.tar.gz newlib-889109ab1f067163550437c266efb53710c74ab9.tar.bz2 |
* 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.
Diffstat (limited to 'winsup/cygwin/mmap.cc')
-rw-r--r-- | winsup/cygwin/mmap.cc | 5 |
1 files changed, 3 insertions, 2 deletions
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) |