From 8c77d6e990a445eeb5d33ed788b3134f60f4ac52 Mon Sep 17 00:00:00 2001 From: Lynix Date: Sat, 6 Apr 2013 00:13:56 +0200 Subject: [PATCH] Fixed leaks Former-commit-id: 2f0a73b3bb5df04c13200d71dc198e2fe9ec30e1 --- include/Nazara/Core/ResourceRef.inl | 39 +++++++++-------------------- 1 file changed, 12 insertions(+), 27 deletions(-) diff --git a/include/Nazara/Core/ResourceRef.inl b/include/Nazara/Core/ResourceRef.inl index e2097457e..71c6d14cd 100644 --- a/include/Nazara/Core/ResourceRef.inl +++ b/include/Nazara/Core/ResourceRef.inl @@ -54,15 +54,18 @@ template bool NzResourceRef::Reset(T* resource) { bool destroyed = false; - if (m_resource) + if (m_resource != resource) { - destroyed = m_resource->RemoveResourceReference(); - m_resource = nullptr; - } + if (m_resource) + { + destroyed = m_resource->RemoveResourceReference(); + m_resource = nullptr; + } - m_resource = resource; - if (m_resource) - m_resource->AddResourceReference(); + m_resource = resource; + if (m_resource) + m_resource->AddResourceReference(); + } return destroyed; } @@ -96,16 +99,7 @@ T* NzResourceRef::operator->() const template NzResourceRef& NzResourceRef::operator=(T* resource) { - if (m_resource != resource) - { - Reset(); - - if (resource) - { - m_resource = resource; - m_resource->AddResourceReference(); - } - } + Reset(resource); return *this; } @@ -113,16 +107,7 @@ NzResourceRef& NzResourceRef::operator=(T* resource) template NzResourceRef& NzResourceRef::operator=(const NzResourceRef& ref) { - if (m_resource != ref.m_resource) - { - Reset(); - - if (ref) - { - m_resource = ref.m_resource; - m_resource->AddResourceReference(); - } - } + Reset(ref.m_resource); return *this; }