]> granicus.if.org Git - php/commitdiff
- MFH: Moved the FREE_OP to after the execution of the included file, or eval
authorDerick Rethans <derick@php.net>
Wed, 21 Sep 2005 08:13:43 +0000 (08:13 +0000)
committerDerick Rethans <derick@php.net>
Wed, 21 Sep 2005 08:13:43 +0000 (08:13 +0000)
  statement so that it is safe to access this information in the overridden
  zend_execute() function, which is what Xdebug does.

Zend/zend_vm_def.h
Zend/zend_vm_execute.h

index ac48686da46882070f6cff4d968513fc9d0fb000..3c16e3e7e5fc875cf53a1c374d60634bd658540a 100644 (file)
@@ -2749,7 +2749,6 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
        if (inc_filename==&tmp_inc_filename) {
                zval_dtor(&tmp_inc_filename);
        }
-       FREE_OP1();
        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        if (new_op_array) {
                zval *saved_object;
@@ -2799,6 +2798,7 @@ ZEND_VM_HANDLER(73, ZEND_INCLUDE_OR_EVAL, CONST|TMP|VAR|CV, ANY)
                        EX_T(opline->result.u.var).var.ptr->type = IS_BOOL;
                }
        }
+       FREE_OP1();
        EG(return_value_ptr_ptr) = original_return_value;
        ZEND_VM_NEXT_OPCODE();
 }
index 2ef1b4ec64fd5385d7e9498c946396d9d18efcc3..6cae5f99985400a487826c3936953a4e4b6b9967 100644 (file)
@@ -1903,7 +1903,6 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        if (inc_filename==&tmp_inc_filename) {
                zval_dtor(&tmp_inc_filename);
        }
-
        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        if (new_op_array) {
                zval *saved_object;
@@ -1953,6 +1952,7 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        EX_T(opline->result.u.var).var.ptr->type = IS_BOOL;
                }
        }
+
        EG(return_value_ptr_ptr) = original_return_value;
        ZEND_VM_NEXT_OPCODE();
 }
@@ -4320,7 +4320,6 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        if (inc_filename==&tmp_inc_filename) {
                zval_dtor(&tmp_inc_filename);
        }
-       zval_dtor(free_op1.var);
        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        if (new_op_array) {
                zval *saved_object;
@@ -4370,6 +4369,7 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        EX_T(opline->result.u.var).var.ptr->type = IS_BOOL;
                }
        }
+       zval_dtor(free_op1.var);
        EG(return_value_ptr_ptr) = original_return_value;
        ZEND_VM_NEXT_OPCODE();
 }
@@ -7347,7 +7347,6 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        if (inc_filename==&tmp_inc_filename) {
                zval_dtor(&tmp_inc_filename);
        }
-       if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        if (new_op_array) {
                zval *saved_object;
@@ -7397,6 +7396,7 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        EX_T(opline->result.u.var).var.ptr->type = IS_BOOL;
                }
        }
+       if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
        EG(return_value_ptr_ptr) = original_return_value;
        ZEND_VM_NEXT_OPCODE();
 }
@@ -19511,7 +19511,6 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
        if (inc_filename==&tmp_inc_filename) {
                zval_dtor(&tmp_inc_filename);
        }
-
        EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr;
        if (new_op_array) {
                zval *saved_object;
@@ -19561,6 +19560,7 @@ static int ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
                        EX_T(opline->result.u.var).var.ptr->type = IS_BOOL;
                }
        }
+
        EG(return_value_ptr_ptr) = original_return_value;
        ZEND_VM_NEXT_OPCODE();
 }