Fixed MichaelList assertion
[libcds.git] / cds / intrusive / michael_list_nogc.h
index de48a4bf4fb09acf3b4c431e38bac3000fadf3d5..06ac410dc43773c70ad554508666be8eae4d80e3 100644 (file)
@@ -154,7 +154,11 @@ namespace cds { namespace intrusive {
             link_checker::is_empty( pNode );
 
             pNode->m_pNext.store( pos.pCur, memory_model::memory_order_relaxed );
-            return pos.pPrev->compare_exchange_strong( pos.pCur, pNode, memory_model::memory_order_release, atomics::memory_order_relaxed );
+            if ( pos.pPrev->compare_exchange_strong( pos.pCur, pNode, memory_model::memory_order_release, atomics::memory_order_relaxed ))
+                return true;
+
+            pNode->m_pNext.store( nullptr, memory_model::memory_order_relaxed );
+            return false;
         }
         //@endcond