diff options
Diffstat (limited to 'src/core')
-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); + } } } |