diff options
author | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-06 01:21:30 +0000 |
---|---|---|
committer | jam@chromium.org <jam@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-03-06 01:21:30 +0000 |
commit | 05f007c22ee94c9143d730910bd26efed7a663b8 (patch) | |
tree | c4d8d1c36c19a2db88fd86c6d35d5b134ef4837e /base | |
parent | b7688d7ddfb50980c80faa5b47f236f24d061f98 (diff) | |
download | chromium_src-05f007c22ee94c9143d730910bd26efed7a663b8.zip chromium_src-05f007c22ee94c9143d730910bd26efed7a663b8.tar.gz chromium_src-05f007c22ee94c9143d730910bd26efed7a663b8.tar.bz2 |
An assert was being hit because WaitableEvent's dtor was calling CloseHandle on a handle that we already closed.
BUG=8070
Review URL: http://codereview.chromium.org/40195
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@11078 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base')
-rw-r--r-- | base/waitable_event.h | 3 | ||||
-rw-r--r-- | base/waitable_event_win.cc | 6 |
2 files changed, 9 insertions, 0 deletions
diff --git a/base/waitable_event.h b/base/waitable_event.h index 022a88a..28c130b 100644 --- a/base/waitable_event.h +++ b/base/waitable_event.h @@ -56,6 +56,9 @@ class WaitableEvent { // created. This objects takes ownership of the HANDLE and will close it when // deleted. explicit WaitableEvent(HANDLE event_handle); + + // Releases ownership of the handle from this object. + HANDLE Release(); #endif // WARNING: Destroying a WaitableEvent while threads are waiting on it is not diff --git a/base/waitable_event_win.cc b/base/waitable_event_win.cc index 001a5df..ac85c5c 100644 --- a/base/waitable_event_win.cc +++ b/base/waitable_event_win.cc @@ -28,6 +28,12 @@ WaitableEvent::~WaitableEvent() { CloseHandle(handle_); } +HANDLE WaitableEvent::Release() { + HANDLE rv = handle_; + handle_ = INVALID_HANDLE_VALUE; + return rv; +} + void WaitableEvent::Reset() { ResetEvent(handle_); } |