diff options
| author | Andreas Stoeckel <astoecke@techfak.uni-bielefeld.de> | 2015-04-12 23:33:27 +0200 | 
|---|---|---|
| committer | Andreas Stöckel <astoecke@techfak.uni-bielefeld.de> | 2016-04-25 22:24:17 +0200 | 
| commit | ef213b258cb4dc13bf72be75e5967c4420c3c8d8 (patch) | |
| tree | 18c978b5bf9214ebc897f83490b32007f0f98c67 /src | |
| parent | 38054ce4d3d6a4bc3a372ebdef0d556449f3ae1f (diff) | |
Owned<T> should behave just like Rooted<T> if the owner is set to nullptr
Diffstat (limited to 'src')
| -rw-r--r-- | src/core/managed/Managed.hpp | 16 | 
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); +			}  		}  	} | 
