]> granicus.if.org Git - php/commitdiff
Don't include trailing zero into hash caclculation
authorDmitry Stogov <dmitry@zend.com>
Fri, 14 Mar 2014 11:35:57 +0000 (15:35 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 14 Mar 2014 11:35:57 +0000 (15:35 +0400)
Zend/zend_compile.h
Zend/zend_hash.c
Zend/zend_string.h
main/streams/streams.c

index 050cc4799330d690b044f8cb1e5fdcf7536729c5..ca83c2e95e059f8d7d5b88c9b847af50855a6f9c 100644 (file)
@@ -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) */
index b189599b32d0d3b9cb8223b9b260ae54ad1d2be5..f06eb7d62457299186a198d8273eb8a3499381d2 100644 (file)
@@ -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;
 }
index 8b2602123503abd632b5e8c7700a3c96fb160520..e3467a8b7681379054eb4e8b319e12aac4d716ab 100644 (file)
@@ -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;
 }
index 9dde1cfe1917e5aa6d52d00431c07b9c59e3c1a4..ad8bcf2070062b159cec564673efb4f973a6dbd1 100644 (file)
@@ -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 */