summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Stoeckel <astoecke@techfak.uni-bielefeld.de>2015-04-12 23:33:27 +0200
committerAndreas Stöckel <astoecke@techfak.uni-bielefeld.de>2016-04-25 22:24:17 +0200
commitef213b258cb4dc13bf72be75e5967c4420c3c8d8 (patch)
tree18c978b5bf9214ebc897f83490b32007f0f98c67
parent38054ce4d3d6a4bc3a372ebdef0d556449f3ae1f (diff)
Owned<T> should behave just like Rooted<T> if the owner is set to nullptr
-rw-r--r--src/core/managed/Managed.hpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/src/core/managed/Managed.hpp b/src/core/managed/Managed.hpp
index 26118dc..e38efea 100644
--- a/src/core/managed/Managed.hpp
+++ b/src/core/managed/Managed.hpp
@@ -551,15 +551,23 @@ private:
void addRef()
{
- if (Handle<T>::ptr && owner) {
- owner->getManager().addRef(Handle<T>::ptr, owner);
+ if (Handle<T>::ptr) {
+ if (owner) {
+ owner->getManager().addRef(Handle<T>::ptr, owner);
+ } else {
+ Handle<T>::ptr->getManager().addRef(Handle<T>::ptr, owner);
+ }
}
}
void deleteRef()
{
- if (Handle<T>::ptr && owner) {
- owner->getManager().deleteRef(Handle<T>::ptr, owner);
+ if (Handle<T>::ptr) {
+ if (owner) {
+ owner->getManager().deleteRef(Handle<T>::ptr, owner);
+ } else {
+ Handle<T>::ptr->getManager().deleteRef(Handle<T>::ptr, owner);
+ }
}
}