From: Bogdan Padalko Date: Mon, 11 Jan 2016 23:26:34 +0000 (+0200) Subject: Remove obj handlers ptr value from spl_object_hash() X-Git-Tag: php-7.0.3RC1~27 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=2b4625d68737c553c1fa50a5442bc976814ae855;p=php Remove obj handlers ptr value from spl_object_hash() We still keep the same output length, for people who rely on the return value having a specific format. The handler part will now simply be always the same (it was the same nearly always anyway). The motivation behind this change is to avoid breaking spl_object_hash() and SplObjectStorage if an extension changes the handlers table of an object. This has come up, for example, in weakref implementations. --- diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c index 57e43d4fae..9c7611d117 100644 --- a/ext/spl/php_spl.c +++ b/ext/spl/php_spl.c @@ -777,7 +777,7 @@ PHPAPI zend_string *php_spl_object_hash(zval *obj) /* {{{*/ } hash_handle = SPL_G(hash_mask_handle)^(intptr_t)Z_OBJ_HANDLE_P(obj); - hash_handlers = SPL_G(hash_mask_handlers)^(intptr_t)Z_OBJ_HT_P(obj); + hash_handlers = SPL_G(hash_mask_handlers); return strpprintf(32, "%016lx%016lx", hash_handle, hash_handlers); }