| Index: base/memory/discardable_shared_memory.cc
|
| diff --git a/base/memory/discardable_shared_memory.cc b/base/memory/discardable_shared_memory.cc
|
| index 830d6b9d87fdde5438b2d1255c6dc07b62aabf93..f8248e942cbc69aa48a4ad32e073e746c5dac3c0 100644
|
| --- a/base/memory/discardable_shared_memory.cc
|
| +++ b/base/memory/discardable_shared_memory.cc
|
| @@ -157,6 +157,14 @@ bool DiscardableSharedMemory::Map(size_t size) {
|
| return true;
|
| }
|
|
|
| +bool DiscardableSharedMemory::Unmap() {
|
| + if (!shared_memory_.Unmap())
|
| + return false;
|
| +
|
| + mapped_size_ = 0;
|
| + return true;
|
| +}
|
| +
|
| DiscardableSharedMemory::LockResult DiscardableSharedMemory::Lock(
|
| size_t offset, size_t length) {
|
| DCHECK_EQ(AlignToPageSize(offset), offset);
|
| @@ -212,10 +220,11 @@ DiscardableSharedMemory::LockResult DiscardableSharedMemory::Lock(
|
|
|
| #if defined(OS_ANDROID)
|
| SharedMemoryHandle handle = shared_memory_.handle();
|
| - DCHECK(SharedMemory::IsHandleValid(handle));
|
| - if (ashmem_pin_region(
|
| - handle.fd, AlignToPageSize(sizeof(SharedState)) + offset, length)) {
|
| - return PURGED;
|
| + if (SharedMemory::IsHandleValid(handle)) {
|
| + if (ashmem_pin_region(
|
| + handle.fd, AlignToPageSize(sizeof(SharedState)) + offset, length)) {
|
| + return PURGED;
|
| + }
|
| }
|
| #endif
|
|
|
| @@ -237,10 +246,11 @@ void DiscardableSharedMemory::Unlock(size_t offset, size_t length) {
|
|
|
| #if defined(OS_ANDROID)
|
| SharedMemoryHandle handle = shared_memory_.handle();
|
| - DCHECK(SharedMemory::IsHandleValid(handle));
|
| - if (ashmem_unpin_region(
|
| - handle.fd, AlignToPageSize(sizeof(SharedState)) + offset, length)) {
|
| - DPLOG(ERROR) << "ashmem_unpin_region() failed";
|
| + if (SharedMemory::IsHandleValid(handle)) {
|
| + if (ashmem_unpin_region(
|
| + handle.fd, AlignToPageSize(sizeof(SharedState)) + offset, length)) {
|
| + DPLOG(ERROR) << "ashmem_unpin_region() failed";
|
| + }
|
| }
|
| #endif
|
|
|
| @@ -336,9 +346,7 @@ bool DiscardableSharedMemory::IsMemoryResident() const {
|
| }
|
|
|
| void DiscardableSharedMemory::Close() {
|
| - shared_memory_.Unmap();
|
| shared_memory_.Close();
|
| - mapped_size_ = 0;
|
| }
|
|
|
| #if defined(DISCARDABLE_SHARED_MEMORY_SHRINKING)
|
|
|