Avoid unneeded inc/dec rec in RefPtr::operator=

This commit is contained in:
Maxime Coste 2015-11-10 13:50:15 +00:00
parent 95c1d25f28
commit 53184829ee

View File

@ -23,12 +23,16 @@ struct RefPtr
: m_ptr(other.m_ptr) { other.m_ptr = nullptr; moved(&other); } : m_ptr(other.m_ptr) { other.m_ptr = nullptr; moved(&other); }
RefPtr& operator=(const RefPtr& other) RefPtr& operator=(const RefPtr& other)
{
if (other.m_ptr != m_ptr)
{ {
release(); release();
m_ptr = other.m_ptr; m_ptr = other.m_ptr;
acquire(); acquire();
}
return *this; return *this;
} }
RefPtr& operator=(RefPtr&& other) RefPtr& operator=(RefPtr&& other)
{ {
release(); release();
@ -39,10 +43,13 @@ struct RefPtr
} }
RefPtr& operator=(T* ptr) RefPtr& operator=(T* ptr)
{
if (ptr != m_ptr)
{ {
release(); release();
m_ptr = ptr; m_ptr = ptr;
acquire(); acquire();
}
return *this; return *this;
} }