Fixed use-after-free bug in SkipList<HP>
[libcds.git] / cds / container / details / make_skip_list_map.h
index 8e456fe07bbded2621616c223e076f875240dbfc..c4941393bd36dd736263a563e31491d708787c2c 100644 (file)
@@ -57,22 +57,15 @@ namespace cds { namespace container { namespace details {
             //atomic_marked_ptr m_arrTower[] ;  // allocated together with node_type in single memory block
 
             template <typename Q>
-            node_type( unsigned int nHeight, atomic_marked_ptr * pTower, Q const& key )
-                : m_Value( std::make_pair( key, mapped_type()))
-            {
-                init_tower( nHeight, pTower );
-            }
-
-            template <typename Q, typename U>
-            node_type( unsigned int nHeight, atomic_marked_ptr * pTower, Q const& key, U const& val )
-                : m_Value( std::make_pair( key, val ))
+            node_type( unsigned int nHeight, atomic_marked_ptr * pTower, Q&& key )
+                : m_Value( std::make_pair( std::forward<Q>( key ), mapped_type()))
             {
                 init_tower( nHeight, pTower );
             }
 
             template <typename Q, typename... Args>
             node_type( unsigned int nHeight, atomic_marked_ptr * pTower, Q&& key, Args&&... args )
-                : m_Value( std::forward<Q>(key), std::move( mapped_type( std::forward<Args>(args)... )))
+                : m_Value( std::forward<Q>(key), mapped_type( std::forward<Args>(args)... ))
             {
                 init_tower( nHeight, pTower );
             }