summaryrefslogtreecommitdiff
path: root/src/core/managed
diff options
context:
space:
mode:
authorAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-12-17 02:42:46 +0100
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2014-12-17 02:42:46 +0100
commitf1d768733c8b9166bbfb6943567b01b9d6fbcb15 (patch)
tree10f7ad581b1775e492e90e8d431d7ac121b02550 /src/core/managed
parent540689657f4b080b1c1b49d6e654d9761b16e67b (diff)
made ManagedContainer more roboust against managed objects already being deleted while removing the reference to the owner
Diffstat (limited to 'src/core/managed')
-rw-r--r--src/core/managed/ManagedContainer.hpp4
1 files changed, 2 insertions, 2 deletions
diff --git a/src/core/managed/ManagedContainer.hpp b/src/core/managed/ManagedContainer.hpp
index 68477e0..19bff3f 100644
--- a/src/core/managed/ManagedContainer.hpp
+++ b/src/core/managed/ManagedContainer.hpp
@@ -162,7 +162,7 @@ protected:
void addElement(const value_type &elem)
{
Managed* managed = accessor.getManaged(elem);
- Manager &manager = managed->getManager();
+ Manager &manager = owner ? owner->getManager() : managed->getManager();
manager.addRef(managed, owner);
listener.addElement(elem, owner);
@@ -179,7 +179,7 @@ protected:
void deleteElement(const value_type &elem)
{
Managed* managed = accessor.getManaged(elem);
- Manager &manager = managed->getManager();
+ Manager &manager = owner ? owner->getManager() : managed->getManager();
manager.deleteRef(managed, owner);
listener.deleteElement(elem, owner);