summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorerikchen <erikchen@chromium.org>2015-10-01 14:38:46 -0700
committerCommit bot <commit-bot@chromium.org>2015-10-01 21:39:43 +0000
commit342e9a9e890a316cee81da8017bf22b1dca4ea74 (patch)
tree805a74898be47a9e36ccf3afe0f9edd77adc6f67
parent974be3b5e99424f4308fff378f6699b781c67693 (diff)
downloadchromium_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.h8
-rw-r--r--base/memory/shared_memory_mac.cc14
-rw-r--r--base/memory/shared_memory_posix.cc12
-rw-r--r--ui/surface/transport_dib_posix.cc7
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;