diff options
Diffstat (limited to 'cpp/src')
-rw-r--r-- | cpp/src/IceStorm/Flusher.cpp | 9 | ||||
-rw-r--r-- | cpp/src/IceStorm/TopicManagerI.cpp | 1 |
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 |