forked from enlightenment/efl
Don't compute string length when not really needed.
SVN revision: 36001
This commit is contained in:
parent
1582d52c3c
commit
e3e2afca18
|
@ -30,11 +30,27 @@ eina_hash_djb2(const char *key, int len)
|
|||
const unsigned char *ptr;
|
||||
|
||||
if (!key) return 0;
|
||||
|
||||
for (ptr = (unsigned char *)key; len; ptr++, len--)
|
||||
hash_num = ((hash_num << 5) + hash_num) ^ *ptr; /* hash * 33 ^ c */
|
||||
|
||||
return (int)hash_num;
|
||||
}
|
||||
|
||||
static inline int
|
||||
eina_hash_djb2_len(const char *key, int *plen)
|
||||
{
|
||||
unsigned int hash_num = 5381;
|
||||
int len = 0;
|
||||
const unsigned char *ptr;
|
||||
|
||||
if (!key) return 0;
|
||||
|
||||
for (ptr = (unsigned char *)key; *ptr; ptr++, len++)
|
||||
hash_num = ((hash_num << 5) + hash_num) ^ *ptr; /* hash * 33 ^ c */
|
||||
|
||||
*plen = len + 1;
|
||||
|
||||
return (int)hash_num;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -179,8 +179,7 @@ eina_stringshare_add(const char *str)
|
|||
int hash_num, slen, hash;
|
||||
|
||||
if (!str) return NULL;
|
||||
slen = strlen(str) + 1;
|
||||
hash = eina_hash_djb2(str, slen);
|
||||
hash = eina_hash_djb2_len(str, &slen);
|
||||
hash_num = hash & 0xFF;
|
||||
hash &= 0xFFF;
|
||||
|
||||
|
@ -240,8 +239,7 @@ eina_stringshare_del(const char *str)
|
|||
int hash_num, slen, hash;
|
||||
|
||||
if (!str) return;
|
||||
slen = strlen(str) + 1;
|
||||
hash = eina_hash_djb2(str, slen);
|
||||
hash = eina_hash_djb2_len(str, &slen);
|
||||
hash_num = hash & 0xFF;
|
||||
hash &= 0xFFF;
|
||||
|
||||
|
|
Loading…
Reference in New Issue