summaryrefslogtreecommitdiff
path: root/Zend/zend_compile.c
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@php.net>2007-02-15 10:38:28 +0000
committerDmitry Stogov <dmitry@php.net>2007-02-15 10:38:28 +0000
commit0291ad5fa68a3c87faba5c181d36ec2d5f6c2345 (patch)
treebc8700b873fcaf642c99606b9183c07076e94ed6 /Zend/zend_compile.c
parentb997390e1d2c49c88d75c3a28572ff42fadd8d57 (diff)
downloadphp-git-0291ad5fa68a3c87faba5c181d36ec2d5f6c2345.tar.gz
Fixed bug #40236 (php -a function allocation eats memory)
Diffstat (limited to 'Zend/zend_compile.c')
-rw-r--r--Zend/zend_compile.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index 713c18305a..d0b0b70b67 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -1067,6 +1067,7 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
int function_begin_line = function_token->u.opline_num;
zend_uint fn_flags;
char *lcname;
+ zend_bool orig_interactive;
if (is_method) {
if (CG(active_class_entry)->ce_flags & ZEND_ACC_INTERFACE) {
@@ -1086,11 +1087,14 @@ void zend_do_begin_function_declaration(znode *function_token, znode *function_n
function_token->u.op_array = CG(active_op_array);
lcname = zend_str_tolower_dup(name, name_len);
+ orig_interactive = CG(interactive);
+ CG(interactive) = 0;
init_op_array(&op_array, ZEND_USER_FUNCTION, INITIAL_OP_ARRAY_SIZE TSRMLS_CC);
+ CG(interactive) = orig_interactive;
op_array.function_name = name;
op_array.return_reference = return_reference;
- op_array.fn_flags = fn_flags;
+ op_array.fn_flags |= fn_flags;
op_array.pass_rest_by_reference = 0;
op_array.scope = is_method?CG(active_class_entry):NULL;