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);
 }