[DEBUG] correct leak when asign value on a sharedPtr

This commit is contained in:
Edouard DUPIN 2016-07-26 21:21:45 +02:00
parent 7b1d20dd43
commit 082c66329e
2 changed files with 7 additions and 0 deletions

View File

@ -104,6 +104,7 @@ ememory::SharedPtr<EMEMORY_TYPE>::SharedPtr(const ememory::SharedPtr<EMEMORY_TYP
template<typename EMEMORY_TYPE>
ememory::SharedPtr<EMEMORY_TYPE>& ememory::SharedPtr<EMEMORY_TYPE>::operator= (const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
reset();
m_element = _obj.m_element;
m_counter = _obj.m_counter;
m_deleter = _obj.m_deleter;
@ -164,6 +165,7 @@ template<class EMEMORY_TYPE2,
typename std::enable_if< std::is_base_of<EMEMORY_TYPE, EMEMORY_TYPE2>::value
, int>::type>
ememory::SharedPtr<EMEMORY_TYPE>& ememory::SharedPtr<EMEMORY_TYPE>::operator= (const SharedPtr<EMEMORY_TYPE2>& _obj) {
reset();
m_element = const_cast<EMEMORY_TYPE2*>(_obj.get());
m_counter = const_cast<ememory::Counter*>(_obj.getCounter());
m_deleter = createDeleter();
@ -379,6 +381,7 @@ namespace ememory {
}
template<class EMEMORY_TYPE2>
SharedPtr& operator= (const SharedPtr<EMEMORY_TYPE2>& _obj) {
reset();
m_element = (void*)_obj.get();
m_counter = _obj.getCounter();
if ( m_element == nullptr

View File

@ -58,6 +58,7 @@ ememory::WeakPtr<EMEMORY_TYPE>::WeakPtr(const ememory::WeakPtr<EMEMORY_TYPE>& _o
template<typename EMEMORY_TYPE>
ememory::WeakPtr<EMEMORY_TYPE>& ememory::WeakPtr<EMEMORY_TYPE>::operator= (const ememory::WeakPtr<EMEMORY_TYPE>& _obj) {
reset();
m_element = _obj.m_element;
m_counter = _obj.m_counter;
if ( m_element == nullptr
@ -106,6 +107,7 @@ ememory::WeakPtr<EMEMORY_TYPE>::WeakPtr(const ememory::SharedPtr<EMEMORY_TYPE>&
template<typename EMEMORY_TYPE>
ememory::WeakPtr<EMEMORY_TYPE>& ememory::WeakPtr<EMEMORY_TYPE>::operator= (const ememory::SharedPtr<EMEMORY_TYPE>& _obj) {
reset();
m_element = _obj.m_element;
m_counter = _obj.m_counter;
if ( m_element == nullptr
@ -149,6 +151,7 @@ template<class EMEMORY_TYPE2,
&& !std::is_void<EMEMORY_TYPE2>::value
, int>::type>
ememory::WeakPtr<EMEMORY_TYPE>& ememory::WeakPtr<EMEMORY_TYPE>::operator= (const ememory::SharedPtr<EMEMORY_TYPE2>& _obj) {
reset();
m_element = (void*)_obj.get();
m_counter = _obj.getCounter();
if ( m_element == nullptr
@ -188,6 +191,7 @@ template<class EMEMORY_TYPE2,
typename std::enable_if< std::is_base_of<EMEMORY_TYPE, EMEMORY_TYPE2>::value
, int>::type>
WeakPtr& operator= (const WeakPtr<EMEMORY_TYPE2>& _obj) {
reset();
m_element = _obj.m_element;
m_counter = _obj.getCounter();
if ( m_element == nullptr