From: Dmitry Stogov Date: Fri, 14 Mar 2014 11:35:57 +0000 (+0400) Subject: Don't include trailing zero into hash caclculation X-Git-Tag: POST_PHPNG_MERGE~412^2~326 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=51494f252f1a2edf1aa2a13925d318a922c4a1aa;p=php Don't include trailing zero into hash caclculation --- diff --git a/Zend/zend_compile.h b/Zend/zend_compile.h index 050cc47993..ca83c2e95e 100644 --- a/Zend/zend_compile.h +++ b/Zend/zend_compile.h @@ -137,9 +137,9 @@ typedef struct _zend_try_catch_element { } zend_try_catch_element; #if SIZEOF_LONG == 8 -#define THIS_HASHVAL 210728972157UL +#define THIS_HASHVAL 6385726429UL #else -#define THIS_HASHVAL 275574653UL +#define THIS_HASHVAL 2090759133UL #endif /* method flags (types) */ diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index b189599b32..f06eb7d624 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -594,7 +594,7 @@ ZEND_API int zend_hash_str_del(HashTable *ht, const char *str, int len) IS_CONSISTENT(ht); - h = zend_inline_hash_func(str, len + 1); + h = zend_inline_hash_func(str, len); nIndex = h & ht->nTableMask; idx = ht->arHash[nIndex]; @@ -1045,7 +1045,7 @@ ZEND_API zval *zend_hash_str_find(const HashTable *ht, const char *str, int len) return NULL; } - h = zend_inline_hash_func(str, len + 1); + h = zend_inline_hash_func(str, len); p = zend_hash_str_find_bucket(ht, str, len, h); return p ? &p->val : NULL; } @@ -1075,7 +1075,7 @@ ZEND_API int zend_hash_str_exists(const HashTable *ht, const char *str, int len) return 0; } - h = zend_inline_hash_func(str, len + 1); + h = zend_inline_hash_func(str, len); p = zend_hash_str_find_bucket(ht, str, len, h); return p ? 1 : 0; } diff --git a/Zend/zend_string.h b/Zend/zend_string.h index 8b26021235..e3467a8b76 100644 --- a/Zend/zend_string.h +++ b/Zend/zend_string.h @@ -59,7 +59,7 @@ END_EXTERN_C() static zend_always_inline zend_ulong zend_str_hash_val(zend_string *s) { if (!s->h) { - s->h = zend_hash_func(s->val, s->len + 1); + s->h = zend_hash_func(s->val, s->len); } return s->h; } diff --git a/main/streams/streams.c b/main/streams/streams.c index 9dde1cfe19..ad8bcf2070 100644 --- a/main/streams/streams.c +++ b/main/streams/streams.c @@ -159,7 +159,7 @@ static zend_llist *php_get_wrapper_errors_list(php_stream_wrapper *wrapper TSRML if (!FG(wrapper_errors)) { return NULL; } else { - return (zend_llist*) zend_hash_str_find_ptr(FG(wrapper_errors), (const char*)&wrapper, sizeof(wrapper) - 1); + return (zend_llist*) zend_hash_str_find_ptr(FG(wrapper_errors), (const char*)&wrapper, sizeof(wrapper)); } } @@ -231,7 +231,7 @@ void php_stream_display_wrapper_errors(php_stream_wrapper *wrapper, const char * void php_stream_tidy_wrapper_error_log(php_stream_wrapper *wrapper TSRMLS_DC) { if (wrapper && FG(wrapper_errors)) { - zend_hash_str_del(FG(wrapper_errors), (const char*)&wrapper, sizeof(wrapper) - 1); + zend_hash_str_del(FG(wrapper_errors), (const char*)&wrapper, sizeof(wrapper)); } } @@ -264,14 +264,14 @@ PHPAPI void php_stream_wrapper_log_error(php_stream_wrapper *wrapper, int option ALLOC_HASHTABLE(FG(wrapper_errors)); zend_hash_init(FG(wrapper_errors), 8, NULL, wrapper_list_dtor, 0); } else { - list = zend_hash_str_find_ptr(FG(wrapper_errors), (const char*)&wrapper, sizeof(wrapper) - 1); + list = zend_hash_str_find_ptr(FG(wrapper_errors), (const char*)&wrapper, sizeof(wrapper)); } if (!list) { zend_llist new_list; zend_llist_init(&new_list, sizeof(buffer), wrapper_error_dtor, 0); list = zend_hash_str_update_mem(FG(wrapper_errors), (const char*)&wrapper, - sizeof(wrapper) - 1, &new_list, sizeof(new_list)); + sizeof(wrapper), &new_list, sizeof(new_list)); } /* append to linked list */