Fixed leaks

Former-commit-id: 2f0a73b3bb5df04c13200d71dc198e2fe9ec30e1
This commit is contained in:
Lynix 2013-04-06 00:13:56 +02:00
parent 1c59676051
commit 8c77d6e990
1 changed files with 12 additions and 27 deletions

View File

@ -54,6 +54,8 @@ template<typename T>
bool NzResourceRef<T>::Reset(T* resource) bool NzResourceRef<T>::Reset(T* resource)
{ {
bool destroyed = false; bool destroyed = false;
if (m_resource != resource)
{
if (m_resource) if (m_resource)
{ {
destroyed = m_resource->RemoveResourceReference(); destroyed = m_resource->RemoveResourceReference();
@ -63,6 +65,7 @@ bool NzResourceRef<T>::Reset(T* resource)
m_resource = resource; m_resource = resource;
if (m_resource) if (m_resource)
m_resource->AddResourceReference(); m_resource->AddResourceReference();
}
return destroyed; return destroyed;
} }
@ -96,16 +99,7 @@ T* NzResourceRef<T>::operator->() const
template<typename T> template<typename T>
NzResourceRef<T>& NzResourceRef<T>::operator=(T* resource) NzResourceRef<T>& NzResourceRef<T>::operator=(T* resource)
{ {
if (m_resource != resource) Reset(resource);
{
Reset();
if (resource)
{
m_resource = resource;
m_resource->AddResourceReference();
}
}
return *this; return *this;
} }
@ -113,16 +107,7 @@ NzResourceRef<T>& NzResourceRef<T>::operator=(T* resource)
template<typename T> template<typename T>
NzResourceRef<T>& NzResourceRef<T>::operator=(const NzResourceRef& ref) NzResourceRef<T>& NzResourceRef<T>::operator=(const NzResourceRef& ref)
{ {
if (m_resource != ref.m_resource) Reset(ref.m_resource);
{
Reset();
if (ref)
{
m_resource = ref.m_resource;
m_resource->AddResourceReference();
}
}
return *this; return *this;
} }