diff options
author | Dmitry Stogov <dmitry@php.net> | 2005-10-20 07:23:26 +0000 |
---|---|---|
committer | Dmitry Stogov <dmitry@php.net> | 2005-10-20 07:23:26 +0000 |
commit | c095e20ca8cc8fbe4d165f6411bb2235cf5f8dfc (patch) | |
tree | 3a0ae1fb75c31de29d918ef4cd4676f6c6e44d23 /Zend/zend_vm_execute.h | |
parent | 9269f5847784091c1174b576da998cf55027f3cf (diff) | |
download | php-git-c095e20ca8cc8fbe4d165f6411bb2235cf5f8dfc.tar.gz |
Fixed bug #31177 (menory leaks and corruption because of incorrect refcounting)
Diffstat (limited to 'Zend/zend_vm_execute.h')
-rw-r--r-- | Zend/zend_vm_execute.h | 228 |
1 files changed, 44 insertions, 184 deletions
diff --git a/Zend/zend_vm_execute.h b/Zend/zend_vm_execute.h index 35d51db68d..4d60dc2769 100644 --- a/Zend/zend_vm_execute.h +++ b/Zend/zend_vm_execute.h @@ -126,6 +126,7 @@ static int zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) zval *current_this; int return_value_used = RETURN_VALUE_USED(opline); zend_bool should_change_scope; + zend_op *ctor_opline; if (EX(function_state).function->common.fn_flags & ZEND_ACC_ABSTRACT) { zend_error_noreturn(E_ERROR, "Cannot call abstract method %s::%s()", EX(function_state).function->common.scope->name, EX(function_state).function->common.function_name); @@ -142,7 +143,7 @@ static int zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) current_this = EG(This); EG(This) = EX(object); current_scope = EG(scope); - EG(scope) = EX(calling_scope); + EG(scope) = (EX(function_state).function->type == ZEND_USER_FUNCTION || !EX(object)) ? EX(function_state).function->common.scope : NULL; } else { should_change_scope = 0; } @@ -270,16 +271,18 @@ static int zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) } } + ctor_opline = (zend_op*)zend_ptr_stack_pop(&EG(arg_types_stack)); + if (EG(This)) { - if (EG(exception) && EX(fbc) && EX(fbc)->common.fn_flags&ZEND_ACC_CTOR) { - EG(This)->refcount--; + if (EG(exception) && ctor_opline) { + if (RETURN_VALUE_USED(ctor_opline)) { + EG(This)->refcount--; + } if (EG(This)->refcount == 1) { zend_object_store_ctor_failed(EG(This) TSRMLS_CC); } - if (should_change_scope && EG(This) != current_this) { - zval_ptr_dtor(&EG(This)); - } - } else if (should_change_scope) { + } + if (should_change_scope) { zval_ptr_dtor(&EG(This)); } } @@ -288,7 +291,7 @@ static int zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS) EG(This) = current_this; EG(scope) = current_scope; } - zend_ptr_stack_3_pop(&EG(arg_types_stack), (void**)&EX(calling_scope), (void**)&EX(object), (void**)&EX(fbc)); + zend_ptr_stack_2_pop(&EG(arg_types_stack), (void**)&EX(object), (void**)&EX(fbc)); EX(function_state).function = (zend_function *) EX(op_array); EG(function_state_ptr) = &EX(function_state); @@ -410,17 +413,12 @@ static int ZEND_NEW_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) EX_T(opline->result.u.var).var.ptr_ptr = &EX_T(opline->result.u.var).var.ptr; EX_T(opline->result.u.var).var.ptr = object_zval; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), opline); /* We are not handling overloaded classes right now */ EX(object) = object_zval; EX(fbc) = constructor; - if (constructor->type == ZEND_USER_FUNCTION) { /* HACK!! */ - EX(calling_scope) = constructor->common.scope; - } else { - EX(calling_scope) = NULL; - } ZEND_VM_NEXT_OPCODE(); } } @@ -548,10 +546,15 @@ static int ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } while (EX(fbc)) { + zend_op *ctor_opline = (zend_op*)zend_ptr_stack_pop(&EG(arg_types_stack)); + if (EX(object)) { + if (ctor_opline && RETURN_VALUE_USED(ctor_opline)) { + EX(object)->refcount--; + } zval_ptr_dtor(&EX(object)); } - zend_ptr_stack_n_pop(&EG(arg_types_stack), 3, &EX(calling_scope), &EX(object), &EX(fbc)); + zend_ptr_stack_2_pop(&EG(arg_types_stack), (void**)&EX(object), (void**)&EX(fbc)); } /* restore previous error_reporting value */ @@ -629,7 +632,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A zval *function_name; zend_class_entry *ce; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); ce = EX_T(opline->op1.u.var).class_entry; if(IS_CONST != IS_UNUSED) { @@ -664,8 +667,6 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_A EX(fbc) = ce->constructor; } - EX(calling_scope) = EX(fbc)->common.scope; - if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) { EX(object) = NULL; } else { @@ -686,7 +687,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); if (IS_CONST == IS_CONST) { function_name_strval = opline->op2.u.constant.value.str.val; @@ -712,7 +713,6 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } - EX(calling_scope) = function->common.scope; EX(object) = NULL; EX(fbc) = function; @@ -826,7 +826,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG zval *function_name; zend_class_entry *ce; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); ce = EX_T(opline->op1.u.var).class_entry; if(IS_TMP_VAR != IS_UNUSED) { @@ -861,8 +861,6 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG EX(fbc) = ce->constructor; } - EX(calling_scope) = EX(fbc)->common.scope; - if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) { EX(object) = NULL; } else { @@ -883,7 +881,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); if (IS_TMP_VAR == IS_CONST) { function_name_strval = opline->op2.u.constant.value.str.val; @@ -909,7 +907,6 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval_dtor(free_op2.var); } - EX(calling_scope) = function->common.scope; EX(object) = NULL; EX(fbc) = function; @@ -980,7 +977,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG zval *function_name; zend_class_entry *ce; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); ce = EX_T(opline->op1.u.var).class_entry; if(IS_VAR != IS_UNUSED) { @@ -1015,8 +1012,6 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG EX(fbc) = ce->constructor; } - EX(calling_scope) = EX(fbc)->common.scope; - if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) { EX(object) = NULL; } else { @@ -1037,7 +1032,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); if (IS_VAR == IS_CONST) { function_name_strval = opline->op2.u.constant.value.str.val; @@ -1063,7 +1058,6 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; } - EX(calling_scope) = function->common.scope; EX(object) = NULL; EX(fbc) = function; @@ -1133,7 +1127,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ zval *function_name; zend_class_entry *ce; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); ce = EX_T(opline->op1.u.var).class_entry; if(IS_UNUSED != IS_UNUSED) { @@ -1168,8 +1162,6 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ EX(fbc) = ce->constructor; } - EX(calling_scope) = EX(fbc)->common.scope; - if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) { EX(object) = NULL; } else { @@ -1216,7 +1208,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS zval *function_name; zend_class_entry *ce; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); ce = EX_T(opline->op1.u.var).class_entry; if(IS_CV != IS_UNUSED) { @@ -1251,8 +1243,6 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS EX(fbc) = ce->constructor; } - EX(calling_scope) = EX(fbc)->common.scope; - if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) { EX(object) = NULL; } else { @@ -1273,7 +1263,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); if (IS_CV == IS_CONST) { function_name_strval = opline->op2.u.constant.value.str.val; @@ -1299,7 +1289,6 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } - EX(calling_scope) = function->common.scope; EX(object) = NULL; EX(fbc) = function; @@ -1597,13 +1586,12 @@ static int ZEND_DO_FCALL_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) zval *fname = &opline->op1.u.constant; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); if (zend_hash_find(EG(function_table), fname->value.str.val, fname->value.str.len+1, (void **) &EX(function_state).function)==FAILURE) { zend_error_noreturn(E_ERROR, "Unknown function: %s()", fname->value.str.val); } EX(object) = NULL; - EX(calling_scope) = EX(function_state).function->common.scope; return zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU); } @@ -4970,7 +4958,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS int function_name_strlen; zend_free_op free_op1; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = &opline->op2.u.constant; @@ -4981,8 +4969,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -5013,12 +4999,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - ZEND_VM_NEXT_OPCODE(); } @@ -5406,7 +5386,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op1, free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -5417,8 +5397,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -5449,12 +5427,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - zval_dtor(free_op2.var); ZEND_VM_NEXT_OPCODE(); @@ -5844,7 +5816,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op1, free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -5855,8 +5827,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -5887,12 +5857,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; ZEND_VM_NEXT_OPCODE(); @@ -6362,7 +6326,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op1; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -6373,8 +6337,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -6405,12 +6367,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - ZEND_VM_NEXT_OPCODE(); } @@ -8844,7 +8800,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS int function_name_strlen; zend_free_op free_op1; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = &opline->op2.u.constant; @@ -8855,8 +8811,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -8887,12 +8841,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; ZEND_VM_NEXT_OPCODE(); @@ -10277,7 +10225,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op1, free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -10288,8 +10236,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -10320,12 +10266,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - zval_dtor(free_op2.var); if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; @@ -11750,7 +11690,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op1, free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -11761,8 +11701,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -11793,12 +11731,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; @@ -13627,7 +13559,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op1; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -13638,8 +13570,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -13670,12 +13600,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - if (free_op1.var) {zval_ptr_dtor(&free_op1.var);}; ZEND_VM_NEXT_OPCODE(); @@ -14780,7 +14704,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_A int function_name_strlen; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = &opline->op2.u.constant; @@ -14791,8 +14715,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_A function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -14823,12 +14745,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_A } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - ZEND_VM_NEXT_OPCODE(); } @@ -15866,7 +15782,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG int function_name_strlen; zend_free_op free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -15877,8 +15793,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -15909,12 +15823,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - zval_dtor(free_op2.var); ZEND_VM_NEXT_OPCODE(); @@ -16912,7 +16820,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG int function_name_strlen; zend_free_op free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -16923,8 +16831,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -16955,12 +16861,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; ZEND_VM_NEXT_OPCODE(); @@ -18322,7 +18222,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS int function_name_strlen; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -18333,8 +18233,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -18365,12 +18263,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - ZEND_VM_NEXT_OPCODE(); } @@ -20861,7 +20753,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = &opline->op2.u.constant; @@ -20872,8 +20764,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -20904,12 +20794,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - ZEND_VM_NEXT_OPCODE(); } @@ -22286,7 +22170,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -22297,8 +22181,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -22329,12 +22211,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - zval_dtor(free_op2.var); ZEND_VM_NEXT_OPCODE(); @@ -23750,7 +23626,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; zend_free_op free_op2; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC); @@ -23761,8 +23637,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -23793,12 +23667,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - if (free_op2.var) {zval_ptr_dtor(&free_op2.var);}; ZEND_VM_NEXT_OPCODE(); @@ -25617,7 +25485,7 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) int function_name_strlen; - zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), EX(calling_scope)); + zend_ptr_stack_3_push(&EG(arg_types_stack), EX(fbc), EX(object), NULL); function_name = _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC); @@ -25628,8 +25496,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) function_name_strval = function_name->value.str.val; function_name_strlen = function_name->value.str.len; - EX(calling_scope) = EG(scope); - EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC); if (EX(object) && EX(object)->type == IS_OBJECT) { @@ -25660,12 +25526,6 @@ static int ZEND_INIT_METHOD_CALL_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS) } } - if (EX(fbc)->type == ZEND_USER_FUNCTION) { - EX(calling_scope) = EX(fbc)->common.scope; - } else { - EX(calling_scope) = NULL; - } - ZEND_VM_NEXT_OPCODE(); } |