summaryrefslogtreecommitdiff
path: root/qpid/cpp
diff options
context:
space:
mode:
authorAndrew Stitcher <astitcher@apache.org>2008-11-19 14:13:57 +0000
committerAndrew Stitcher <astitcher@apache.org>2008-11-19 14:13:57 +0000
commite8526b5f0563b8691f011740b6c5838af986ac7a (patch)
tree3f1ed23bf3bf2a806c149573f2eb13efbf6b1f30 /qpid/cpp
parentf65ac42187df3531d59c45b148d46dc3cbba3f42 (diff)
downloadqpid-python-e8526b5f0563b8691f011740b6c5838af986ac7a.tar.gz
QPID-1474: Changed lock scope for PollerHandle::~PollerHandle
Also check state better to make sure the impl can't be deleted more than once in a race git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/trunk@718966 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'qpid/cpp')
-rw-r--r--qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp b/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
index d4627ec721..9387453cca 100644
--- a/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
+++ b/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
@@ -116,10 +116,15 @@ PollerHandle::PollerHandle(const IOHandle& h) :
{}
PollerHandle::~PollerHandle() {
+ {
ScopedLock<Mutex> l(impl->lock);
+ if (impl->isDeleted()) {
+ return;
+ }
if (impl->isActive()) {
impl->setDeleted();
}
+ }
PollerHandleDeletionManager.markForDeletion(impl);
}