You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by as...@apache.org on 2008/11/19 15:13:57 UTC
svn commit: r718966 -
/incubator/qpid/trunk/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
Author: astitcher
Date: Wed Nov 19 06:13:57 2008
New Revision: 718966
URL: http://svn.apache.org/viewvc?rev=718966&view=rev
Log:
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
Modified:
incubator/qpid/trunk/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
Modified: incubator/qpid/trunk/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp
URL: http://svn.apache.org/viewvc/incubator/qpid/trunk/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp?rev=718966&r1=718965&r2=718966&view=diff
==============================================================================
--- incubator/qpid/trunk/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp (original)
+++ incubator/qpid/trunk/qpid/cpp/src/qpid/sys/epoll/EpollPoller.cpp Wed Nov 19 06:13:57 2008
@@ -116,10 +116,15 @@
{}
PollerHandle::~PollerHandle() {
+ {
ScopedLock<Mutex> l(impl->lock);
+ if (impl->isDeleted()) {
+ return;
+ }
if (impl->isActive()) {
impl->setDeleted();
}
+ }
PollerHandleDeletionManager.markForDeletion(impl);
}