summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/TopicManagerI.cpp
diff options
context:
space:
mode:
authorJoe George <joe@zeroc.com>2015-09-11 14:30:00 -0400
committerJoe George <joe@zeroc.com>2015-09-11 14:30:00 -0400
commitb9c2a6f6628476f11c78a7de2adc90edca1e209e (patch)
treedf192d87dfbc594a7a2b52a96b5145ad3156d26f /cpp/src/IceStorm/TopicManagerI.cpp
parentICE-6645 Removed hack to keep binary compatibility in Ice 3.6.1 (diff)
parentRemoved ARM configuraton from WinRT testsuite solutions (diff)
downloadice-b9c2a6f6628476f11c78a7de2adc90edca1e209e.tar.bz2
ice-b9c2a6f6628476f11c78a7de2adc90edca1e209e.tar.xz
ice-b9c2a6f6628476f11c78a7de2adc90edca1e209e.zip
Merge remote-tracking branch 'origin/3.6'
Diffstat (limited to 'cpp/src/IceStorm/TopicManagerI.cpp')
-rw-r--r--cpp/src/IceStorm/TopicManagerI.cpp13
1 files changed, 5 insertions, 8 deletions
diff --git a/cpp/src/IceStorm/TopicManagerI.cpp b/cpp/src/IceStorm/TopicManagerI.cpp
index bca2b02e5a3..0de2ab58aa9 100644
--- a/cpp/src/IceStorm/TopicManagerI.cpp
+++ b/cpp/src/IceStorm/TopicManagerI.cpp
@@ -808,16 +808,13 @@ TopicManagerImpl::reap()
//
// Lock sync(*this);
//
- map<string, TopicImplPtr>::iterator p = _topics.begin();
- while(p != _topics.end())
+ vector<string> reaped = _instance->topicReaper()->consumeReapedTopics();
+ for(vector<string>::const_iterator p = reaped.begin(); p != reaped.end(); ++p)
{
- if(p->second->destroyed())
+ map<string, TopicImplPtr>::iterator q = _topics.find(*p);
+ if(q != _topics.end() && q->second->destroyed())
{
- _topics.erase(p++);
- }
- else
- {
- ++p;
+ _topics.erase(q);
}
}
}