summaryrefslogtreecommitdiff
path: root/Zend/zend_opcode.c
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>1999-12-23 19:23:36 +0000
committerZeev Suraski <zeev@php.net>1999-12-23 19:23:36 +0000
commitb996436b4cf20e43716cf5100537b5639623e4c4 (patch)
tree9cc99eae66c002bbf0e794abb1b1367169963f68 /Zend/zend_opcode.c
parent3b86ea7dc0e324c098db8988737e45f4de1995ad (diff)
downloadphp-git-b996436b4cf20e43716cf5100537b5639623e4c4.tar.gz
Fix a class inheritence leak, when using static varibles in a parent class member function
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r--Zend/zend_opcode.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c
index 53d066ac09..77632df91c 100644
--- a/Zend/zend_opcode.c
+++ b/Zend/zend_opcode.c
@@ -153,6 +153,11 @@ ZEND_API void destroy_op_array(zend_op_array *op_array)
zend_op *opline = op_array->opcodes;
zend_op *end = op_array->opcodes+op_array->last;
+ if (op_array->static_variables) {
+ zend_hash_destroy(op_array->static_variables);
+ efree(op_array->static_variables);
+ }
+
if (--(*op_array->refcount)>0) {
return;
}
@@ -184,10 +189,6 @@ ZEND_API void destroy_op_array(zend_op_array *op_array)
if (op_array->brk_cont_array) {
efree(op_array->brk_cont_array);
}
- if (op_array->static_variables) {
- zend_hash_destroy(op_array->static_variables);
- efree(op_array->static_variables);
- }
zend_llist_apply_with_argument(&zend_extensions, (void (*)(void *, void *)) zend_extension_op_array_dtor_handler, op_array);
}