ZEND_API int _zend_hash_init(HashTable *ht, uint nSize, hash_func_t pHashFunction, dtor_func_t pDestructor, zend_bool persistent ZEND_FILE_LINE_DC) |
{ |
uint i = 3; |
Bucket **tmp; |
|
SET_INCONSISTENT(HT_OK); |
|
//长度向2的整数次幂圆整 |
if (nSize >= 0x80000000) { |
/* prevent overflow */ |
ht->nTableSize = 0x80000000; |
} else { |
while ((1U << i) < nSize) { |
i++; |
} |
ht->nTableSize = 1 << i; |
} |
|
ht->nTableMask = ht->nTableSize - 1; |
|
/*此处省略若干代码…*/ |
|
return SUCCESS; |
} |