]> granicus.if.org Git - php/commitdiff
- Moved the FREE_OP to after the execution of the included file, or eval
authorDerick Rethans <derick@php.net>
Wed, 21 Sep 2005 08:12:34 +0000 (08:12 +0000)
committerDerick Rethans <derick@php.net>
Wed, 21 Sep 2005 08:12:34 +0000 (08:12 +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 391da2272e5f546e0455b8c6b67cf76240ef02d8..57e8594fa59b40a6439f8b882eaedf7b588d6604 100644 (file)
@@ -2813,7 +2813,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;
@@ -2863,6 +2862,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 9a23ad8a3826b17f1360bbfc41c7da73131e19d8..91980a2ad374c60d4cc9dcf8e07e90fdf1c0cc96 100644 (file)
@@ -1955,7 +1955,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;
@@ -2005,6 +2004,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();
 }
@@ -4468,7 +4468,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;
@@ -4518,6 +4517,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();
 }
@@ -7606,7 +7606,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;
@@ -7656,6 +7655,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();
 }
@@ -20371,7 +20371,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;
@@ -20421,6 +20420,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();
 }