Enlightenment CVS committal Author : englebass Project : e17 Module : libs/ecore
Dir : e17/libs/ecore/src/lib/ecore Modified Files: ecore_hash.c Log Message: Fix hash reduce function. Passed wrong value to rehash. =================================================================== RCS file: /cvs/e/e17/libs/ecore/src/lib/ecore/ecore_hash.c,v retrieving revision 1.38 retrieving revision 1.39 diff -u -3 -r1.38 -r1.39 --- ecore_hash.c 3 Jun 2007 11:37:32 -0000 1.38 +++ ecore_hash.c 3 Jun 2007 12:22:05 -0000 1.39 @@ -4,19 +4,17 @@ #define PRIME_TABLE_MAX 21 #define PRIME_MIN 17 -#define PRIME_MAX 1677721 +#define PRIME_MAX 16777213 #define ECORE_HASH_CHAIN_MAX 3 #define ECORE_COMPUTE_HASH(hash, key) hash->hash_func(key) % \ ecore_prime_table[hash->size]; -//#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < PRIME_MAX) ? -#define ECORE_HASH_INCREASE(hash) ((hash && hash->size < PRIME_MAX) ? \ +#define ECORE_HASH_INCREASE(hash) ((hash && ecore_prime_table[hash->size] < PRIME_MAX) ? \ (hash->nodes / ecore_prime_table[hash->size]) > \ ECORE_HASH_CHAIN_MAX : FALSE) -//#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > PRIME_MIN) ? -#define ECORE_HASH_REDUCE(hash) ((hash && hash->size > PRIME_MIN) ? \ +#define ECORE_HASH_REDUCE(hash) ((hash && ecore_prime_table[hash->size] > PRIME_MIN) ? \ (double)hash->nodes / (double)ecore_prime_table[hash->size-1] \ < ((double)ECORE_HASH_CHAIN_MAX * 0.375) : FALSE) @@ -677,8 +675,7 @@ CHECK_PARAM_POINTER_RETURN("hash", hash, FALSE); /* Max size reached so return FALSE */ - //if ((ecore_prime_table[hash->size] == PRIME_MAX) || (hash->size == PRIME_TABLE_MAX)) - if (hash->size == PRIME_TABLE_MAX) + if ((ecore_prime_table[hash->size] == PRIME_MAX) || (hash->size == PRIME_TABLE_MAX)) return FALSE; /* @@ -761,7 +758,7 @@ hash->nodes = 0; - if (_ecore_hash_rehash(hash, old, hash->size - 1)) + if (_ecore_hash_rehash(hash, old, hash->size + 1)) { FREE(old); return TRUE; ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs