diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/Ice/ACM.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/cpp/src/Ice/ACM.cpp b/cpp/src/Ice/ACM.cpp index bb620d07430..2c5ac0da78d 100644 --- a/cpp/src/Ice/ACM.cpp +++ b/cpp/src/Ice/ACM.cpp @@ -91,6 +91,14 @@ IceInternal::FactoryACMMonitor::destroy() Lock sync(*this); if(!_instance) { + // + // Ensure all the connections have been cleared, it's important to wait here + // to prevent the timer destruction in IceInternal::Instance::destroy. + // + while(!_connections.empty()) + { + wait(); + } return; } @@ -205,7 +213,7 @@ IceInternal::FactoryACMMonitor::runTimerTask() if(!_instance) { _connections.clear(); - notify(); + notifyAll(); return; } |