summaryrefslogtreecommitdiff
path: root/cpp/src/IceStorm/Observers.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/IceStorm/Observers.cpp')
-rw-r--r--cpp/src/IceStorm/Observers.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/cpp/src/IceStorm/Observers.cpp b/cpp/src/IceStorm/Observers.cpp
index 8240a555c3a..5cafa770133 100644
--- a/cpp/src/IceStorm/Observers.cpp
+++ b/cpp/src/IceStorm/Observers.cpp
@@ -125,8 +125,12 @@ Observers::check()
}
int id = p->id;
p = _observers.erase(p);
- IceUtil::Mutex::Lock sync(_reapedMutex);
+
+ // COMPILERFIX: Just using following causes double unlock with C++Builder 2007
+ //IceUtil::Mutex::Lock sync(_reapedMutex);
+ _reapedMutex.lock();
_reaped.push_back(id);
+ _reapedMutex.unlock();
continue;
}
++p;
@@ -256,8 +260,12 @@ Observers::wait(const string& op)
}
int id = p->id;
p = _observers.erase(p);
- IceUtil::Mutex::Lock sync(_reapedMutex);
+
+ // COMPILERFIX: Just using following causes double unlock with C++Builder 2007
+ //IceUtil::Mutex::Lock sync(_reapedMutex);
+ _reapedMutex.lock();
_reaped.push_back(id);
+ _reapedMutex.unlock();
continue;
}
++p;