forked from enlightenment/efl
Fix hash reduce function. Passed wrong value to rehash.
SVN revision: 30214
This commit is contained in:
parent
6f042d4963
commit
237cb22cf5
|
@ -4,19 +4,17 @@
|
||||||
|
|
||||||
#define PRIME_TABLE_MAX 21
|
#define PRIME_TABLE_MAX 21
|
||||||
#define PRIME_MIN 17
|
#define PRIME_MIN 17
|
||||||
#define PRIME_MAX 1677721
|
#define PRIME_MAX 16777213
|
||||||
|
|
||||||
#define ECORE_HASH_CHAIN_MAX 3
|
#define ECORE_HASH_CHAIN_MAX 3
|
||||||
|
|
||||||
#define ECORE_COMPUTE_HASH(hash, key) hash->hash_func(key) % \
|
#define ECORE_COMPUTE_HASH(hash, key) hash->hash_func(key) % \
|
||||||
ecore_prime_table[hash->size];
|
ecore_prime_table[hash->size];
|
||||||
|
|
||||||
//#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < PRIME_MAX) ?
|
#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < PRIME_MAX) ? \
|
||||||
#define ECORE_HASH_INCREASE(hash) ((hash && hash->size < PRIME_MAX) ? \
|
|
||||||
(hash->nodes / ecore_prime_table[hash->size]) > \
|
(hash->nodes / ecore_prime_table[hash->size]) > \
|
||||||
ECORE_HASH_CHAIN_MAX : FALSE)
|
ECORE_HASH_CHAIN_MAX : FALSE)
|
||||||
//#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > PRIME_MIN) ?
|
#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > PRIME_MIN) ? \
|
||||||
#define ECORE_HASH_REDUCE(hash) ((hash && hash->size > PRIME_MIN) ? \
|
|
||||||
(double)hash->nodes / (double)ecore_prime_table[hash->size-1] \
|
(double)hash->nodes / (double)ecore_prime_table[hash->size-1] \
|
||||||
< ((double)ECORE_HASH_CHAIN_MAX * 0.375) : FALSE)
|
< ((double)ECORE_HASH_CHAIN_MAX * 0.375) : FALSE)
|
||||||
|
|
||||||
|
@ -677,8 +675,7 @@ _ecore_hash_increase(Ecore_Hash *hash)
|
||||||
CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
|
CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE);
|
||||||
|
|
||||||
/* Max size reached so return FALSE */
|
/* Max size reached so return FALSE */
|
||||||
//if ((ecore_prime_table[hash->size] == PRIME_MAX) || (hash->size == PRIME_TABLE_MAX))
|
if ((ecore_prime_table[hash->size] == PRIME_MAX) || (hash->size == PRIME_TABLE_MAX))
|
||||||
if (hash->size == PRIME_TABLE_MAX)
|
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -761,7 +758,7 @@ _ecore_hash_decrease(Ecore_Hash *hash)
|
||||||
|
|
||||||
hash->nodes = 0;
|
hash->nodes = 0;
|
||||||
|
|
||||||
if (_ecore_hash_rehash(hash, old, hash->size - 1))
|
if (_ecore_hash_rehash(hash, old, hash->size + 1))
|
||||||
{
|
{
|
||||||
FREE(old);
|
FREE(old);
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|
Loading…
Reference in New Issue