summaryrefslogtreecommitdiff
path: root/cpp/src
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src')
-rw-r--r--cpp/src/IceStorm/Flusher.cpp9
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp1
2 files changed, 7 insertions, 3 deletions
diff --git a/cpp/src/IceStorm/Flusher.cpp b/cpp/src/IceStorm/Flusher.cpp
index 8dae4d5cce8..4ef6b3374d1 100644
--- a/cpp/src/IceStorm/Flusher.cpp
+++ b/cpp/src/IceStorm/Flusher.cpp
@@ -70,6 +70,11 @@ public:
}
flushAll();
}
+
+ //
+ // We break a cycle by clearing the subscriber list.
+ //
+ _subscribers.clear();
}
void
@@ -162,8 +167,6 @@ Flusher::Flusher(const Ice::CommunicatorPtr& communicator, const TraceLevelsPtr&
Flusher::~Flusher()
{
- _thread->destroy();
- _thread->getThreadControl().join();
}
void
@@ -182,5 +185,5 @@ void
Flusher::stopFlushing()
{
_thread->destroy();
+ _thread->getThreadControl().join();
}
-
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index 1076b904244..3ce6d859b26 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -68,6 +68,7 @@ TopicManagerI::TopicManagerI(const Ice::CommunicatorPtr& communicator, const Ice
TopicManagerI::~TopicManagerI()
{
+ _flusher->stopFlushing();
}
TopicPrx