diff options
| author | Dmitry Stogov <dmitry@zend.com> | 2015-03-04 17:41:01 +0300 |
|---|---|---|
| committer | Dmitry Stogov <dmitry@zend.com> | 2015-03-04 17:41:01 +0300 |
| commit | 8ec8648c911d848c86316b8dce2b9d8ce23098ff (patch) | |
| tree | 71a4dc447acefa24a4a228936c9ddd39ba38e774 /Zend/zend_opcode.c | |
| parent | fefbddf22b2a4cd4edbff0e0945b68b563530b2b (diff) | |
| download | php-git-8ec8648c911d848c86316b8dce2b9d8ce23098ff.tar.gz | |
Improved code for class property inheritance
Diffstat (limited to 'Zend/zend_opcode.c')
| -rw-r--r-- | Zend/zend_opcode.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 0473fc9f26..e76cfe9498 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -233,6 +233,7 @@ void _destroy_zend_class_traits_info(zend_class_entry *ce) ZEND_API void destroy_zend_class(zval *zv) { + zend_property_info *prop_info; zend_class_entry *ce = Z_PTR_P(zv); if (--ce->refcount > 0) { @@ -260,6 +261,14 @@ 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)) { + zend_string_release(prop_info->name); + if (prop_info->doc_comment) { + zend_string_release(prop_info->doc_comment); + } + } + } ZEND_HASH_FOREACH_END(); zend_hash_destroy(&ce->properties_info); zend_string_release(ce->name); zend_hash_destroy(&ce->function_table); |
