]> granicus.if.org Git - php/commitdiff
Fixed memleak in tests/lang/engine_assignExecutionOrder_001.phpt
authorDmitry Stogov <dmitry@php.net>
Mon, 21 Sep 2009 13:01:17 +0000 (13:01 +0000)
committerDmitry Stogov <dmitry@php.net>
Mon, 21 Sep 2009 13:01:17 +0000 (13:01 +0000)
Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index 33b94e1849a8c684760f4c7f44900fccbe29241d..499d539d98e6e0b7bcbb66258016bf31fc5da0f0 100644 (file)
@@ -939,6 +939,7 @@ ZEND_VM_HELPER_EX(zend_fetch_var_address_helper, CONST|TMP|VAR|CV, ANY, int type
 
        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+               FREE_OP1();
        } else {
                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*
index f348b31d914c1b3ad6b502440e7a687e8aa9ec81..f2863a6ddd7f1c7a650c27976470cf8fbf14c174 100644 (file)
@@ -1531,6 +1531,7 @@ static int zend_fetch_var_address_helper_SPEC_CONST(int type, ZEND_OPCODE_HANDLE
 
        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+
        } else {
                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*
@@ -4111,6 +4112,7 @@ static int zend_fetch_var_address_helper_SPEC_TMP(int type, ZEND_OPCODE_HANDLER_
 
        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+               zval_dtor(free_op1.var);
        } else {
                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*
@@ -7166,6 +7168,7 @@ static int zend_fetch_var_address_helper_SPEC_VAR(int type, ZEND_OPCODE_HANDLER_
 
        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+               if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        } else {
                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*
@@ -19600,6 +19603,7 @@ static int zend_fetch_var_address_helper_SPEC_CV(int type, ZEND_OPCODE_HANDLER_A
 
        if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
                retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+
        } else {
                target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*