Index: base/files/memory_mapped_file_win.cc |
diff --git a/base/files/memory_mapped_file_win.cc b/base/files/memory_mapped_file_win.cc |
index 4e7e934e1c858823f13a2c7842a1daa0e390591b..2bbf1b0321abf3479be70d4644284428ebc40b0c 100644 |
--- a/base/files/memory_mapped_file_win.cc |
+++ b/base/files/memory_mapped_file_win.cc |
@@ -19,13 +19,17 @@ bool MemoryMappedFile::InitializeAsImageSection(const FilePath& file_name) { |
} |
bool MemoryMappedFile::MapFileRegionToMemory( |
- const MemoryMappedFile::Region& region) { |
+ const MemoryMappedFile::Region& region, bool write) { |
ThreadRestrictions::AssertIOAllowed(); |
if (!file_.IsValid()) |
return false; |
- int flags = image_ ? SEC_IMAGE | PAGE_READONLY : PAGE_READONLY; |
+ int flags = 0; |
+ if (image_) |
+ flags = SEC_IMAGE | PAGE_READONLY; |
wuchengli
2014/08/28 10:17:48
Why we don't need PAGE_READWRITE for SEC_IMAGE?
henryhsu
2014/08/29 06:36:40
image_ is true when InitializeAsImageSection funct
wuchengli
2014/08/29 10:03:11
From MSDN, it doesn't say SEC_IMAGE is not allowed
|
+ else |
+ flags = write ? PAGE_READWRITE : PAGE_READONLY; |
file_mapping_.Set(::CreateFileMapping(file_.GetPlatformFile(), NULL, |
flags, 0, 0, NULL)); |
@@ -66,8 +70,9 @@ bool MemoryMappedFile::MapFileRegionToMemory( |
length_ = static_cast<size_t>(region.size); |
} |
+ int map_flags = (flags & PAGE_READONLY) ? FILE_MAP_READ : FILE_MAP_WRITE; |
wuchengli
2014/08/28 10:17:48
s/flags & PAGE_READONLY/write/
map_access is bett
henryhsu
2014/08/29 06:36:40
Done.
|
data_ = static_cast<uint8*>(::MapViewOfFile(file_mapping_.Get(), |
- FILE_MAP_READ, |
+ map_flags, |
map_start.HighPart, |
map_start.LowPart, |
map_size)); |