libs/lmo: fix whitespace handling in string hashing, optimize code

This commit is contained in:
Jo-Philipp Wich 2012-11-23 10:15:02 +00:00
parent 5fdf562669
commit c647ff9f0e

View file

@ -55,16 +55,11 @@ static uint32_t _lmo_hash_string(lua_State *L, int n) {
if (!str || len >= sizeof(res))
return 0;
while (*str && isspace(*str))
str++;
for (prev = 0, ptr = res; *str; prev = *str, str++)
for (prev = ' ', ptr = res; *str; prev = *str, str++)
{
if (isspace(*str))
{
if (isspace(prev))
continue;
if (!isspace(prev))
*ptr++ = ' ';
}
else
@ -73,7 +68,7 @@ static uint32_t _lmo_hash_string(lua_State *L, int n) {
}
}
while ((ptr > res) && isspace(*ptr))
if ((ptr > res) && isspace(*(ptr-1)))
ptr--;
return sfh_hash(res, ptr - res);