X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/8ae94823a3bf377614a5a67f750545217b6f6b8d..9c54e4ae1f401a9c337b97b588e5a356d79cbe82:/src/common/hashmap.cpp diff --git a/src/common/hashmap.cpp b/src/common/hashmap.cpp index 098d789ac7..f86e192644 100644 --- a/src/common/hashmap.cpp +++ b/src/common/hashmap.cpp @@ -128,20 +128,9 @@ void _wxHashTableBase2::CopyHashTable( _wxHashTable_NodeBase** srcTable, size_t srcBuckets, _wxHashTableBase2* dst, _wxHashTable_NodeBase** dstTable, - size_t dstBuckets, BucketFromNode func, ProcessNode proc ) { - // for compatibility with wxHashTable (to avoid reimplementig it - // from scratch), we need to preserve the order of nodes in a - // source bucket when copying the table, hence, to avoid - // allocating an auxiliary table we use a circular list for each - // bucket, and we keep the *tail* of each list in dstTable[i], to - // be able to append nodes in O(1) time. Wen we're done copying, - // we adjust dstTable[i] to point at the head of the list and we - // break the circular list into a linear one. - size_t i; - - for( i = 0; i < srcBuckets; ++i ) + for( size_t i = 0; i < srcBuckets; ++i ) { _wxHashTable_NodeBase* nextnode; @@ -151,24 +140,8 @@ void _wxHashTableBase2::CopyHashTable( _wxHashTable_NodeBase** srcTable, nextnode = node->m_nxt; _wxHashTable_NodeBase* newnode = proc( node ); - if( dstTable[bucket] ) - { - newnode->m_nxt = dstTable[bucket]->m_nxt; // head of the list - dstTable[bucket]->m_nxt = newnode; - dstTable[bucket] = newnode; - } - else - dstTable[bucket] = newnode->m_nxt = newnode; - } - } - - for( i = 0; i < dstBuckets; ++i ) - { - if( dstTable[i] ) - { - _wxHashTable_NodeBase* tmp = dstTable[i]; - dstTable[i] = dstTable[i]->m_nxt; - tmp->m_nxt = NULL; + newnode->m_nxt = dstTable[bucket]; + dstTable[bucket] = newnode; } } }