From 2b4625d68737c553c1fa50a5442bc976814ae855 Mon Sep 17 00:00:00 2001 From: Bogdan Padalko Date: Tue, 12 Jan 2016 01:26:34 +0200 Subject: [PATCH] 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. --- ext/spl/php_spl.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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); } -- 2.40.0