X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=cds%2Fintrusive%2Fmichael_list_nogc.h;fp=cds%2Fintrusive%2Fmichael_list_nogc.h;h=06ac410dc43773c70ad554508666be8eae4d80e3;hb=8a05c794447f5898d8451f09c60e12dd8501fdb3;hp=de48a4bf4fb09acf3b4c431e38bac3000fadf3d5;hpb=bb641a5d82c58bba864e40debdcd2c9fff201d15;p=libcds.git diff --git a/cds/intrusive/michael_list_nogc.h b/cds/intrusive/michael_list_nogc.h index de48a4bf..06ac410d 100644 --- a/cds/intrusive/michael_list_nogc.h +++ b/cds/intrusive/michael_list_nogc.h @@ -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