summaryrefslogtreecommitdiff
path: root/Zend/zend_opcode.c
diff options
context:
space:
mode:
authorNikita Popov <nikita.ppv@gmail.com>2019-08-17 10:57:26 +0200
committerNikita Popov <nikita.ppv@gmail.com>2019-08-17 10:58:54 +0200
commitbe7e819068985859f92e4af21e49b4f647dd0467 (patch)
tree9c5b0f10549116ce14c54e2e5f04600c3ec66ea7 /Zend/zend_opcode.c
parenta192499d2a3806bf55aa060539b5ce8580aa5db7 (diff)
downloadphp-git-be7e819068985859f92e4af21e49b4f647dd0467.tar.gz
Fixed bug #77922
In PHP 7.3 shadow properties are no longer duplicated. Make sure we only release them if the property was defined on the parent class, which means that it changed from private->shadow, which is where duplication does happen.
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r--Zend/zend_opcode.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index cd1525bdab..a7f32de379 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -235,7 +235,8 @@ ZEND_API void destroy_zend_class(zval *zv)
efree(ce->default_static_members_table);
}
ZEND_HASH_FOREACH_PTR(&ce->properties_info, prop_info) {
- if (prop_info->ce == ce || (prop_info->flags & ZEND_ACC_SHADOW)) {
+ if (prop_info->ce == ce ||
+ ((prop_info->flags & ZEND_ACC_SHADOW) && prop_info->ce == ce->parent)) {
zend_string_release_ex(prop_info->name, 0);
if (prop_info->doc_comment) {
zend_string_release_ex(prop_info->doc_comment, 0);