THRIFT: Mutex and ReadWriteMutex leaked memory, now they don't
authorboz <dev-null@apache.org>
Thu, 20 Sep 2007 23:24:16 +0000 (23:24 +0000)
committerboz <dev-null@apache.org>
Thu, 20 Sep 2007 23:24:16 +0000 (23:24 +0000)
Summary: also added myself to CONTRIBUTORS.

Reviewed By: marc

Test Plan: the following program no longer leaks memory (valgrind):

int main(int argc, char **argv){
  Mutex mu;
  mu.lock();
  mu.unlock();
}

Revert Plan: ok

Notes: this is kind of important

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@665279 13f79535-47bb-0310-9956-ffa450edef68

CONTRIBUTORS
lib/cpp/src/concurrency/Mutex.cpp
lib/cpp/src/concurrency/Mutex.h

index e6c9682..7ecb934 100644 (file)
@@ -45,6 +45,11 @@ Paul Querna <pquerna@apache.org>
 -Autoconf error message fix for libevent detection
 -clock_gettime implementation for OSX
 
+Andrew Bosworth <bosworth@post.harvard.edu>
+- ReadWriteMutex
+- Mutex memory leak fix
+- added callback to redirect logging
+
 ----------------
 Release 20070401
 ----------------
index 695d5dc..2674d44 100644 (file)
@@ -46,6 +46,8 @@ class Mutex::impl {
 
 Mutex::Mutex() : impl_(new Mutex::impl()) {}
 
+Mutex::~Mutex() { delete impl_; }
+
 void Mutex::lock() const { impl_->lock(); }
 
 bool Mutex::trylock() const { return impl_->trylock(); }
@@ -91,6 +93,8 @@ private:
 
 ReadWriteMutex::ReadWriteMutex() : impl_(new ReadWriteMutex::impl()) {}
 
+ReadWriteMutex::~ReadWriteMutex() { delete impl_; }
+
 void ReadWriteMutex::acquireRead() const { impl_->acquireRead(); }
 
 void ReadWriteMutex::acquireWrite() const { impl_->acquireWrite(); }
index 72f7525..b19e3c5 100644 (file)
@@ -18,7 +18,7 @@ namespace facebook { namespace thrift { namespace concurrency {
 class Mutex {
  public:
   Mutex();
-  virtual ~Mutex() {}
+  virtual ~Mutex();
   virtual void lock() const;
   virtual bool trylock() const;
   virtual void unlock() const;
@@ -31,7 +31,7 @@ class Mutex {
 class ReadWriteMutex {
 public:
   ReadWriteMutex();
-  virtual ~ReadWriteMutex() {}
+  virtual ~ReadWriteMutex();
 
   // these get the lock and block until it is done successfully
   virtual void acquireRead() const;