diff options
author | Moriyoshi Koizumi <mozo@mozo.jp> | 2012-06-25 19:13:23 +0900 |
---|---|---|
committer | Moriyoshi Koizumi <mozo@mozo.jp> | 2012-06-25 19:14:19 +0900 |
commit | 91e1df704eed40325fd963a308e466bbbf96184f (patch) | |
tree | 090de6534a787bab7d33c9d546af0468502b1a54 /ext/standard/var.c | |
parent | ad641950b3d047fc20729b7a18c62b414622cc79 (diff) | |
download | php-git-91e1df704eed40325fd963a308e466bbbf96184f.tar.gz |
Fix bug #62373 (serialize() generates wrong reference to the object)
Diffstat (limited to 'ext/standard/var.c')
-rw-r--r-- | ext/standard/var.c | 7 |
1 files changed, 2 insertions, 5 deletions
diff --git a/ext/standard/var.c b/ext/standard/var.c index c6126e95fa..735d0a7cbb 100644 --- a/ext/standard/var.c +++ b/ext/standard/var.c @@ -541,12 +541,9 @@ static inline int php_add_var_hash(HashTable *var_hash, zval *var, void *var_old /* relies on "(long)" being a perfect hash function for data pointers, * however the actual identity of an object has had to be determined - * by its object handle and the class entry since 5.0. */ + * by its object handle since 5.0. */ if ((Z_TYPE_P(var) == IS_OBJECT) && Z_OBJ_HT_P(var)->get_class_entry) { - p = smart_str_print_long(id + sizeof(id) - 1, - (((size_t)Z_OBJCE_P(var) << 5) - | ((size_t)Z_OBJCE_P(var) >> (sizeof(long) * 8 - 5))) - + (long) Z_OBJ_HANDLE_P(var)); + p = smart_str_print_long(id + sizeof(id) - 1, (long) Z_OBJ_HANDLE_P(var)); *(--p) = 'O'; len = id + sizeof(id) - 1 - p; } else { |