From 27de47471df6ceb5dadd1d24cc00166056c9dbe4 Mon Sep 17 00:00:00 2001 From: Andrew Stitcher Date: Wed, 19 Nov 2008 14:13:57 +0000 Subject: 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/qpid@718966 13f79535-47bb-0310-9956-ffa450edef68 --- cpp/src/qpid/sys/epoll/EpollPoller.cpp | 5 +++++ 1 file changed, 5 insertions(+) (limited to 'cpp/src') diff --git a/cpp/src/qpid/sys/epoll/EpollPoller.cpp b/cpp/src/qpid/sys/epoll/EpollPoller.cpp index d4627ec721..9387453cca 100644 --- a/cpp/src/qpid/sys/epoll/EpollPoller.cpp +++ b/cpp/src/qpid/sys/epoll/EpollPoller.cpp @@ -116,10 +116,15 @@ PollerHandle::PollerHandle(const IOHandle& h) : {} PollerHandle::~PollerHandle() { + { ScopedLock l(impl->lock); + if (impl->isDeleted()) { + return; + } if (impl->isActive()) { impl->setDeleted(); } + } PollerHandleDeletionManager.markForDeletion(impl); } -- cgit v1.2.1