diff options
author | Dmitry Stogov <dmitry@php.net> | 2010-04-20 11:05:54 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2010-04-20 11:05:54 +0000 |
commit | dd5c478be61a0ef94b54837cfa875c964356e14f (patch) | |
tree | afdce3c072b3c27f7721c6f24895a147a9f825b4 /Zend/zend_opcode.c | |
parent | 94dd83722b57c4613ccf8371a3c4f50ffc274584 (diff) | |
download | php-git-dd5c478be61a0ef94b54837cfa875c964356e14f.tar.gz |
Added concept of interned strings. All strings constants known at compile time are allocated in a single copy and never changed.
Diffstat (limited to 'Zend/zend_opcode.c')
-rw-r--r-- | Zend/zend_opcode.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Zend/zend_opcode.c b/Zend/zend_opcode.c index 9fdbd70870..9e9b2f5767 100644 --- a/Zend/zend_opcode.c +++ b/Zend/zend_opcode.c @@ -243,7 +243,7 @@ ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC) i = op_array->last_var; while (i > 0) { i--; - efree(op_array->vars[i].name); + str_efree(op_array->vars[i].name); } efree(op_array->vars); } @@ -275,8 +275,8 @@ ZEND_API void destroy_op_array(zend_op_array *op_array TSRMLS_DC) } if (op_array->arg_info) { for (i=0; i<op_array->num_args; i++) { - efree((char*)op_array->arg_info[i].name); - if (op_array->arg_info[i].class_name) { + str_efree((char*)op_array->arg_info[i].name); + if (op_array->arg_info[i].class_name && !IS_INTERNED(op_array->arg_info[i].class_name)) { efree((char*)op_array->arg_info[i].class_name); } } |