summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/Ice/ACM.cpp10
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;
}