diff options
Diffstat (limited to 'src/client/mac/Framework')
-rw-r--r-- | src/client/mac/Framework/Breakpad.mm | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/src/client/mac/Framework/Breakpad.mm b/src/client/mac/Framework/Breakpad.mm index a1336475..0b3fa715 100644 --- a/src/client/mac/Framework/Breakpad.mm +++ b/src/client/mac/Framework/Breakpad.mm @@ -33,6 +33,7 @@ #import "client/mac/Framework/Breakpad.h" +#include <assert.h> #import <Foundation/Foundation.h> #include <pthread.h> #include <sys/stat.h> @@ -95,36 +96,32 @@ pthread_mutex_t gDictionaryMutex; // ProtectedMemoryLocker will unprotect this block after taking the lock. // Its destructor will first re-protect the memory then release the lock. class ProtectedMemoryLocker { -public: - // allocator may be NULL, in which case no Protect() or Unprotect() calls - // will be made, but a lock will still be taken + public: ProtectedMemoryLocker(pthread_mutex_t *mutex, ProtectedMemoryAllocator *allocator) - : mutex_(mutex), allocator_(allocator) { + : mutex_(mutex), + allocator_(allocator) { // Lock the mutex - assert(pthread_mutex_lock(mutex_) == 0); + int rv = pthread_mutex_lock(mutex_); + assert(rv == 0); // Unprotect the memory - if (allocator_ ) { - allocator_->Unprotect(); - } + allocator_->Unprotect(); } ~ProtectedMemoryLocker() { // First protect the memory - if (allocator_) { - allocator_->Protect(); - } + allocator_->Protect(); // Then unlock the mutex - assert(pthread_mutex_unlock(mutex_) == 0); + int rv = pthread_mutex_unlock(mutex_); + assert(rv == 0); }; -private: - // Keep anybody from ever creating one of these things not on the stack. - ProtectedMemoryLocker() { } + private: + ProtectedMemoryLocker(); ProtectedMemoryLocker(const ProtectedMemoryLocker&); - ProtectedMemoryLocker & operator=(ProtectedMemoryLocker&); + ProtectedMemoryLocker& operator=(const ProtectedMemoryLocker&); pthread_mutex_t *mutex_; ProtectedMemoryAllocator *allocator_; |