]> granicus.if.org Git - php/commit
We don't need to dup zend_class_constant here.
authorXinchen Hui <laruence@gmail.com>
Fri, 22 Jan 2016 03:22:37 +0000 (11:22 +0800)
committerXinchen Hui <laruence@gmail.com>
Fri, 22 Jan 2016 03:22:37 +0000 (11:22 +0800)
commit9b61479166d8fa05f2fc2668d317cf21bd37354b
tree963491384979d88cf88084f2adc01de28429d751
parentaf255c67ebe4bdd0b990ab23310969817d05188d
We don't need to dup zend_class_constant here.

quote why the internal class is still using duplication:
```
for internal classes, the zend_class_constant is malloc-ed. we need to
free it.

if (const->ce == ce) {
zval_ptr_dtor(&const->value);
free(const)
}
so, if two classes share one const, and it(parent class) was freed
before, this read(in child class, const->ce) is invalid..

and destroy_zend_class is called via zend_hash_destroy(class_table).
which is not in reverse order... so, parent classes are dtor first.

if we want this work, we should change that order.
```
Zend/zend_inheritance.c
Zend/zend_opcode.c