diff --git a/ememory/details/SharedPtr.hxx b/ememory/details/SharedPtr.hxx index 8cd7555..6417e7a 100644 --- a/ememory/details/SharedPtr.hxx +++ b/ememory/details/SharedPtr.hxx @@ -379,6 +379,20 @@ namespace ememory { } m_counter->incrementShared(); } + SharedPtr(const SharedPtr& _obj) { + m_element = _obj.m_element; + m_counter = _obj.m_counter; + if ( m_element == null + || m_counter == null) { + m_element = null; + m_counter = null; + return; + } + if (m_counter == null) { + return; + } + m_counter->incrementShared(); + } template SharedPtr& operator= (const SharedPtr& _obj) { reset(); @@ -396,6 +410,22 @@ namespace ememory { m_counter->incrementShared(); return *this; } + SharedPtr& operator= (const SharedPtr& _obj) { + reset(); + m_element = _obj.m_element; + m_counter = _obj.m_counter; + if ( m_element == null + || m_counter == null) { + m_element = null; + m_counter = null; + return *this; + } + if (m_counter == null) { + return *this; + } + m_counter->incrementShared(); + return *this; + } public: void reset() { if(m_counter == null) {