diff options
author | Mike Buland <eichlan@xagasoft.com> | 2010-04-07 17:44:57 +0000 |
---|---|---|
committer | Mike Buland <eichlan@xagasoft.com> | 2010-04-07 17:44:57 +0000 |
commit | 943cf16f5661357086532b2241e6f85bfe43565a (patch) | |
tree | 6ef615680835ea0415becf62387168a31cb36b32 /src/hash.h | |
parent | 6cdf5615a2729df486def3fae2e6f548a34fb83b (diff) | |
download | libbu++-943cf16f5661357086532b2241e6f85bfe43565a.tar.gz libbu++-943cf16f5661357086532b2241e6f85bfe43565a.tar.bz2 libbu++-943cf16f5661357086532b2241e6f85bfe43565a.tar.xz libbu++-943cf16f5661357086532b2241e6f85bfe43565a.zip |
Corrected a long standing yet seldom witnessed hash bug. It was triggered when
a hashtable was filled, then some items were removed, then enough items were
added to trigger a rehash.
Diffstat (limited to 'src/hash.h')
-rw-r--r-- | src/hash.h | 3 |
1 files changed, 2 insertions, 1 deletions
@@ -1115,7 +1115,8 @@ namespace Bu | |||
1115 | // Delete all of the old data | 1115 | // Delete all of the old data |
1116 | for( uint32_t j = 0; j < nOldCapacity; j++ ) | 1116 | for( uint32_t j = 0; j < nOldCapacity; j++ ) |
1117 | { | 1117 | { |
1118 | if( (bOldFilled[j/32]&(1<<(j%32)))!=0 ) | 1118 | if( (bOldFilled[j/32]&(1<<(j%32)))!=0 && |
1119 | (bOldDeleted[j/32]&(1<<(j%32)))==0 ) | ||
1119 | { | 1120 | { |
1120 | va.destroy( &aOldValues[j] ); | 1121 | va.destroy( &aOldValues[j] ); |
1121 | ka.destroy( &aOldKeys[j] ); | 1122 | ka.destroy( &aOldKeys[j] ); |