diff options
author | erikchen <erikchen@chromium.org> | 2015-10-01 14:38:46 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-10-01 21:39:43 +0000 |
commit | 342e9a9e890a316cee81da8017bf22b1dca4ea74 (patch) | |
tree | 805a74898be47a9e36ccf3afe0f9edd77adc6f67 | |
parent | 974be3b5e99424f4308fff378f6699b781c67693 (diff) | |
download | chromium_src-342e9a9e890a316cee81da8017bf22b1dca4ea74.zip chromium_src-342e9a9e890a316cee81da8017bf22b1dca4ea74.tar.gz chromium_src-342e9a9e890a316cee81da8017bf22b1dca4ea74.tar.bz2 |
base: Minor improvement to interface of base::SharedMemory.
The previous declaration of GetSizeFromSharedMemoryHandle() was returning an int
and overloading the meaning of the return value. I changed the interface to
return a bool, and have a size_t output parameter.
BUG=
Review URL: https://codereview.chromium.org/1380173002
Cr-Commit-Position: refs/heads/master@{#351893}
-rw-r--r-- | base/memory/shared_memory.h | 8 | ||||
-rw-r--r-- | base/memory/shared_memory_mac.cc | 14 | ||||
-rw-r--r-- | base/memory/shared_memory_posix.cc | 12 | ||||
-rw-r--r-- | ui/surface/transport_dib_posix.cc | 7 |
4 files changed, 26 insertions, 15 deletions
diff --git a/base/memory/shared_memory.h b/base/memory/shared_memory.h index 4503d00..1049dd1 100644 --- a/base/memory/shared_memory.h +++ b/base/memory/shared_memory.h @@ -124,9 +124,11 @@ class BASE_EXPORT SharedMemory { #endif #if defined(OS_POSIX) && !defined(OS_ANDROID) - // Returns the size of the shared memory region referred to by |handle|. - // Returns '-1' on a failure to determine the size. - static int GetSizeFromSharedMemoryHandle(const SharedMemoryHandle& handle); + // Gets the size of the shared memory region referred to by |handle|. + // Returns false on a failure to determine the size. On success, populates the + // output variable |size|. + static bool GetSizeFromSharedMemoryHandle(const SharedMemoryHandle& handle, + size_t* size); #endif // defined(OS_POSIX) && !defined(OS_ANDROID) // Creates a shared memory object as described by the options struct. diff --git a/base/memory/shared_memory_mac.cc b/base/memory/shared_memory_mac.cc index ab53f01..9cec29f 100644 --- a/base/memory/shared_memory_mac.cc +++ b/base/memory/shared_memory_mac.cc @@ -169,12 +169,16 @@ bool SharedMemory::CreateAndMapAnonymous(size_t size) { } // static -int SharedMemory::GetSizeFromSharedMemoryHandle( - const SharedMemoryHandle& handle) { +bool SharedMemory::GetSizeFromSharedMemoryHandle( + const SharedMemoryHandle& handle, + size_t* size) { struct stat st; - if (fstat(GetFdFromSharedMemoryHandle(handle), &st) != 0) - return -1; - return st.st_size; + if (fstat(handle.GetFileDescriptor().fd, &st) != 0) + return false; + if (st.st_size < 0) + return false; + *size = st.st_size; + return true; } // Chromium mostly only uses the unique/private shmem as specified by diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc index 2e66b34..6a7c1d5 100644 --- a/base/memory/shared_memory_posix.cc +++ b/base/memory/shared_memory_posix.cc @@ -177,12 +177,16 @@ bool SharedMemory::CreateAndMapAnonymous(size_t size) { #if !defined(OS_ANDROID) // static -int SharedMemory::GetSizeFromSharedMemoryHandle( - const SharedMemoryHandle& handle) { +bool SharedMemory::GetSizeFromSharedMemoryHandle( + const SharedMemoryHandle& handle, + size_t* size) { struct stat st; if (fstat(handle.fd, &st) != 0) - return -1; - return st.st_size; + return false; + if (st.st_size < 0) + return false; + *size = st.st_size; + return true; } // Chromium mostly only uses the unique/private shmem as specified by diff --git a/ui/surface/transport_dib_posix.cc b/ui/surface/transport_dib_posix.cc index 0a55dbd..25b2529 100644 --- a/ui/surface/transport_dib_posix.cc +++ b/ui/surface/transport_dib_posix.cc @@ -73,9 +73,10 @@ bool TransportDIB::Map() { if (memory()) return true; - int size = base::SharedMemory::GetSizeFromSharedMemoryHandle( - shared_memory_.handle()); - if (size == -1 || !shared_memory_.Map(size)) + size_t size; + bool success = base::SharedMemory::GetSizeFromSharedMemoryHandle( + shared_memory_.handle(), &size); + if (!success || !shared_memory_.Map(size)) return false; size_ = size; |