summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/Flusher.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/Flusher.cpp')
-rw-r--r--cpp/src/IceStorm/Flusher.cpp14
1 files changed, 10 insertions, 4 deletions
diff --git a/cpp/src/IceStorm/Flusher.cpp b/cpp/src/IceStorm/Flusher.cpp
index 3fb95ec0715..1c5559bb05f 100644
--- a/cpp/src/IceStorm/Flusher.cpp
+++ b/cpp/src/IceStorm/Flusher.cpp
@@ -20,8 +20,8 @@
using namespace IceStorm;
using namespace std;
-void IceStorm::incRef(Flusher* p) { p->__incRef(); }
-void IceStorm::decRef(Flusher* p) { p->__decRef(); }
+void IceInternal::incRef(Flusher* p) { p->__incRef(); }
+void IceInternal::decRef(Flusher* p) { p->__decRef(); }
namespace IceStorm
{
@@ -138,8 +138,14 @@ private:
// (see Meyers for details). If this is fixed then fix TopicI
// also.
//
- _subscribers.remove_if(::Ice::constMemFun(&Subscriber::invalid));
- for_each(_subscribers.begin(), _subscribers.end(), Ice::voidMemFun(&Subscriber::flush));
+ // remove_if doesn't work with handle types. remove_if also
+ // isn't present in the STLport implementation
+ //
+ // _subscribers.remove_if(IceUtil::constMemFun(&Subscriber::invalid));
+ //
+ _subscribers.erase(remove_if(_subscribers.begin(), _subscribers.end(),
+ IceUtil::constMemFun(&Subscriber::invalid)), _subscribers.end());
+ for_each(_subscribers.begin(), _subscribers.end(), IceUtil::voidMemFun(&Subscriber::flush));
//
// Trace after the flush so that the correct number of objects