Index: base/shared_memory_posix.cc |
diff --git a/base/shared_memory_posix.cc b/base/shared_memory_posix.cc |
index 7862f42c194fe2701293673efb6417bf2d7140a6..260cdb30b4df1c51cb858e41914fdb66b02eddce 100644 |
--- a/base/shared_memory_posix.cc |
+++ b/base/shared_memory_posix.cc |
@@ -219,7 +219,7 @@ bool SharedMemory::Open(const std::string& name, bool read_only) { |
#endif // !defined(OS_ANDROID) |
-bool SharedMemory::Map(size_t bytes) { |
+bool SharedMemory::MapAt(off_t offset, size_t bytes) { |
if (mapped_file_ == -1) |
return false; |
@@ -234,16 +234,16 @@ bool SharedMemory::Map(size_t bytes) { |
DCHECK_GE(static_cast<uint32>(ashmem_bytes), bytes); |
// The caller wants to determine the map region size from ashmem. |
- bytes = ashmem_bytes; |
+ bytes = ashmem_bytes - offset; |
// TODO(port): we set the created size here so that it is available in |
// transport_dib_android.cc. We should use ashmem_get_size_region() |
// in transport_dib_android.cc. |
- created_size_ = bytes; |
+ created_size_ = ashmem_bytes; |
} |
#endif |
memory_ = mmap(NULL, bytes, PROT_READ | (read_only_ ? 0 : PROT_WRITE), |
- MAP_SHARED, mapped_file_, 0); |
+ MAP_SHARED, mapped_file_, offset); |
bool mmap_succeeded = memory_ != (void*)-1 && memory_ != NULL; |
if (mmap_succeeded) { |