diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2004-07-16 14:32:03 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2004-07-16 14:32:03 +0000 |
commit | e348b39a719c81dce44594c56daf00cc71a0f55b (patch) | |
tree | e42998acdef198d5bff6dbde208fdfb192dd21ce /winsup/cygwin/mmap.cc | |
parent | 99d86313f4b339be9abf747439356d717730ff61 (diff) | |
download | cygnal-e348b39a719c81dce44594c56daf00cc71a0f55b.tar.gz cygnal-e348b39a719c81dce44594c56daf00cc71a0f55b.tar.bz2 cygnal-e348b39a719c81dce44594c56daf00cc71a0f55b.zip |
* mmap.cc (mmap_record::alloc_page_map): Mark pages as allocated even
on Windows 9x, FWIW.
Diffstat (limited to 'winsup/cygwin/mmap.cc')
-rw-r--r-- | winsup/cygwin/mmap.cc | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/winsup/cygwin/mmap.cc b/winsup/cygwin/mmap.cc index 16611480c..ebca63d59 100644 --- a/winsup/cygwin/mmap.cc +++ b/winsup/cygwin/mmap.cc @@ -168,26 +168,29 @@ mmap_record::alloc_page_map (_off64_t off, DWORD len) sizeof (DWORD)))) return false; + off -= offset_; + len = PAGE_CNT (len); + if (wincap.virtual_protect_works_on_shared_pages ()) { DWORD old_prot; + DWORD vlen = len * getpagesize (); - off -= offset_; - len = PAGE_CNT (len) * getpagesize (); if (off > 0 && !VirtualProtect (base_address_, off, PAGE_NOACCESS, &old_prot)) syscall_printf ("VirtualProtect(%x,%D) failed: %E", base_address_, off); - if (off + len < size_to_map_ - && !VirtualProtect (base_address_ + off + len, - size_to_map_ - len - off, + if (off + vlen < size_to_map_ + && !VirtualProtect (base_address_ + off + vlen, + size_to_map_ - vlen - off, PAGE_NOACCESS, &old_prot)) syscall_printf ("VirtualProtect(%x,%D) failed: %E", - base_address_ + off + len, size_to_map_ - len - off); - off /= getpagesize (); - len /= getpagesize (); - while (len-- > 0) - MAP_SET (off + len); + base_address_ + off + vlen, size_to_map_ - vlen - off); } + + off /= getpagesize (); + + while (len-- > 0) + MAP_SET (off + len); return true; } |