mirror of
https://github.com/php/php-src.git
synced 2025-08-16 05:58:45 +02:00
Fixed bug #31177 (menory leaks and corruption because of incorrect refcounting)
This commit is contained in:
parent
9269f58477
commit
c095e20ca8
6 changed files with 95 additions and 217 deletions
2
NEWS
2
NEWS
|
@ -7,6 +7,8 @@ PHP NEWS
|
||||||
- Fixed bug #33829 (mime_content_type() returns text/plain for gzip and bzip
|
- Fixed bug #33829 (mime_content_type() returns text/plain for gzip and bzip
|
||||||
files). (Derick)
|
files). (Derick)
|
||||||
- Fixed bug #34623 (Crash in pdo_mysql on longtext fields). (Ilia)
|
- Fixed bug #34623 (Crash in pdo_mysql on longtext fields). (Ilia)
|
||||||
|
- Fixed bug #31177 (menory leaks and corruption because of incorrect
|
||||||
|
refcounting). (Dmitry)
|
||||||
- Fixed bug #29983 (PHP does not explicitly set mime type & charset). (Ilia)
|
- Fixed bug #29983 (PHP does not explicitly set mime type & charset). (Ilia)
|
||||||
|
|
||||||
17 Oct 2005, PHP 5.1 Release Candidate 3
|
17 Oct 2005, PHP 5.1 Release Candidate 3
|
||||||
|
|
18
Zend/tests/bug31177-2.phpt
Executable file
18
Zend/tests/bug31177-2.phpt
Executable file
|
@ -0,0 +1,18 @@
|
||||||
|
--TEST--
|
||||||
|
Bug #31177 (menory corruption because of incorrect refcounting)
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
class foo {
|
||||||
|
function foo($n=0) {
|
||||||
|
if($n) throw new Exception("new");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
$x = new foo();
|
||||||
|
try {
|
||||||
|
$y=$x->foo(1);
|
||||||
|
} catch (Exception $e) {
|
||||||
|
var_dump($x);
|
||||||
|
}
|
||||||
|
--EXPECT--
|
||||||
|
object(foo)#1 (0) {
|
||||||
|
}
|
|
@ -27,7 +27,7 @@
|
||||||
/* The first number is the engine version and the rest is the date.
|
/* The first number is the engine version and the rest is the date.
|
||||||
* This way engine 2 API no. is always greater than engine 1 API no..
|
* This way engine 2 API no. is always greater than engine 1 API no..
|
||||||
*/
|
*/
|
||||||
#define ZEND_EXTENSION_API_NO 220050617
|
#define ZEND_EXTENSION_API_NO 220050920
|
||||||
|
|
||||||
typedef struct _zend_extension_version_info {
|
typedef struct _zend_extension_version_info {
|
||||||
int zend_extension_api_no;
|
int zend_extension_api_no;
|
||||||
|
|
|
@ -84,7 +84,14 @@ static inline void zend_ptr_stack_3_pop(zend_ptr_stack *stack, void **a, void **
|
||||||
*a = *(--stack->top_element);
|
*a = *(--stack->top_element);
|
||||||
*b = *(--stack->top_element);
|
*b = *(--stack->top_element);
|
||||||
*c = *(--stack->top_element);
|
*c = *(--stack->top_element);
|
||||||
stack->top -= 3;;
|
stack->top -= 3;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void zend_ptr_stack_2_pop(zend_ptr_stack *stack, void **a, void **b)
|
||||||
|
{
|
||||||
|
*a = *(--stack->top_element);
|
||||||
|
*b = *(--stack->top_element);
|
||||||
|
stack->top -= 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void zend_ptr_stack_push(zend_ptr_stack *stack, void *ptr)
|
static inline void zend_ptr_stack_push(zend_ptr_stack *stack, void *ptr)
|
||||||
|
|
|
@ -1631,7 +1631,7 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||||
int function_name_strlen;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1, free_op2;
|
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_OP2_ZVAL_PTR(BP_VAR_R);
|
function_name = GET_OP2_ZVAL_PTR(BP_VAR_R);
|
||||||
|
|
||||||
|
@ -1642,8 +1642,6 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||||
function_name_strval = function_name->value.str.val;
|
function_name_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
function_name_strlen = function_name->value.str.len;
|
||||||
|
|
||||||
EX(calling_scope) = EG(scope);
|
|
||||||
|
|
||||||
EX(object) = GET_OP1_OBJ_ZVAL_PTR(BP_VAR_R);
|
EX(object) = GET_OP1_OBJ_ZVAL_PTR(BP_VAR_R);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
||||||
|
@ -1674,12 +1672,6 @@ ZEND_VM_HANDLER(112, ZEND_INIT_METHOD_CALL, TMP|VAR|UNUSED|CV, CONST|TMP|VAR|CV)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (EX(fbc)->type == ZEND_USER_FUNCTION) {
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
} else {
|
|
||||||
EX(calling_scope) = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
FREE_OP2();
|
FREE_OP2();
|
||||||
FREE_OP1_IF_VAR();
|
FREE_OP1_IF_VAR();
|
||||||
|
|
||||||
|
@ -1692,7 +1684,7 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, ANY, CONST|TMP|VAR|UNUSED|CV)
|
||||||
zval *function_name;
|
zval *function_name;
|
||||||
zend_class_entry *ce;
|
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;
|
ce = EX_T(opline->op1.u.var).class_entry;
|
||||||
if(OP2_TYPE != IS_UNUSED) {
|
if(OP2_TYPE != IS_UNUSED) {
|
||||||
|
@ -1727,8 +1719,6 @@ ZEND_VM_HANDLER(113, ZEND_INIT_STATIC_METHOD_CALL, ANY, CONST|TMP|VAR|UNUSED|CV)
|
||||||
EX(fbc) = ce->constructor;
|
EX(fbc) = ce->constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
|
|
||||||
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1749,7 +1739,7 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
|
||||||
int function_name_strlen;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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 (OP2_TYPE == IS_CONST) {
|
if (OP2_TYPE == IS_CONST) {
|
||||||
function_name_strval = opline->op2.u.constant.value.str.val;
|
function_name_strval = opline->op2.u.constant.value.str.val;
|
||||||
|
@ -1775,7 +1765,6 @@ ZEND_VM_HANDLER(59, ZEND_INIT_FCALL_BY_NAME, ANY, CONST|TMP|VAR|CV)
|
||||||
FREE_OP2();
|
FREE_OP2();
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = function->common.scope;
|
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
|
|
||||||
EX(fbc) = function;
|
EX(fbc) = function;
|
||||||
|
@ -1792,6 +1781,7 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY)
|
||||||
zval *current_this;
|
zval *current_this;
|
||||||
int return_value_used = RETURN_VALUE_USED(opline);
|
int return_value_used = RETURN_VALUE_USED(opline);
|
||||||
zend_bool should_change_scope;
|
zend_bool should_change_scope;
|
||||||
|
zend_op *ctor_opline;
|
||||||
|
|
||||||
if (EX(function_state).function->common.fn_flags & ZEND_ACC_ABSTRACT) {
|
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);
|
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);
|
||||||
|
@ -1808,7 +1798,7 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY)
|
||||||
current_this = EG(This);
|
current_this = EG(This);
|
||||||
EG(This) = EX(object);
|
EG(This) = EX(object);
|
||||||
current_scope = EG(scope);
|
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 {
|
} else {
|
||||||
should_change_scope = 0;
|
should_change_scope = 0;
|
||||||
}
|
}
|
||||||
|
@ -1936,16 +1926,18 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ctor_opline = (zend_op*)zend_ptr_stack_pop(&EG(arg_types_stack));
|
||||||
|
|
||||||
if (EG(This)) {
|
if (EG(This)) {
|
||||||
if (EG(exception) && EX(fbc) && EX(fbc)->common.fn_flags&ZEND_ACC_CTOR) {
|
if (EG(exception) && ctor_opline) {
|
||||||
|
if (RETURN_VALUE_USED(ctor_opline)) {
|
||||||
EG(This)->refcount--;
|
EG(This)->refcount--;
|
||||||
|
}
|
||||||
if (EG(This)->refcount == 1) {
|
if (EG(This)->refcount == 1) {
|
||||||
zend_object_store_ctor_failed(EG(This) TSRMLS_CC);
|
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));
|
zval_ptr_dtor(&EG(This));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1954,7 +1946,7 @@ ZEND_VM_HELPER(zend_do_fcall_common_helper, ANY, ANY)
|
||||||
EG(This) = current_this;
|
EG(This) = current_this;
|
||||||
EG(scope) = current_scope;
|
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);
|
EX(function_state).function = (zend_function *) EX(op_array);
|
||||||
EG(function_state_ptr) = &EX(function_state);
|
EG(function_state_ptr) = &EX(function_state);
|
||||||
|
@ -1982,13 +1974,12 @@ ZEND_VM_HANDLER(60, ZEND_DO_FCALL, CONST, ANY)
|
||||||
zend_free_op free_op1;
|
zend_free_op free_op1;
|
||||||
zval *fname = GET_OP1_ZVAL_PTR(BP_VAR_R);
|
zval *fname = GET_OP1_ZVAL_PTR(BP_VAR_R);
|
||||||
|
|
||||||
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) {
|
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);
|
zend_error_noreturn(E_ERROR, "Unknown function: %s()", fname->value.str.val);
|
||||||
}
|
}
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
EX(calling_scope) = EX(function_state).function->common.scope;
|
|
||||||
|
|
||||||
FREE_OP1();
|
FREE_OP1();
|
||||||
|
|
||||||
|
@ -2445,17 +2436,12 @@ ZEND_VM_HANDLER(68, ZEND_NEW, ANY, ANY)
|
||||||
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_ptr = &EX_T(opline->result.u.var).var.ptr;
|
||||||
EX_T(opline->result.u.var).var.ptr = object_zval;
|
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 */
|
/* We are not handling overloaded classes right now */
|
||||||
EX(object) = object_zval;
|
EX(object) = object_zval;
|
||||||
EX(fbc) = constructor;
|
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();
|
ZEND_VM_NEXT_OPCODE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3628,10 +3614,15 @@ ZEND_VM_HANDLER(149, ZEND_HANDLE_EXCEPTION, ANY, ANY)
|
||||||
}
|
}
|
||||||
|
|
||||||
while (EX(fbc)) {
|
while (EX(fbc)) {
|
||||||
|
zend_op *ctor_opline = (zend_op*)zend_ptr_stack_pop(&EG(arg_types_stack));
|
||||||
|
|
||||||
if (EX(object)) {
|
if (EX(object)) {
|
||||||
|
if (ctor_opline && RETURN_VALUE_USED(ctor_opline)) {
|
||||||
|
EX(object)->refcount--;
|
||||||
|
}
|
||||||
zval_ptr_dtor(&EX(object));
|
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 */
|
/* restore previous error_reporting value */
|
||||||
|
|
|
@ -126,6 +126,7 @@ static int zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
zval *current_this;
|
zval *current_this;
|
||||||
int return_value_used = RETURN_VALUE_USED(opline);
|
int return_value_used = RETURN_VALUE_USED(opline);
|
||||||
zend_bool should_change_scope;
|
zend_bool should_change_scope;
|
||||||
|
zend_op *ctor_opline;
|
||||||
|
|
||||||
if (EX(function_state).function->common.fn_flags & ZEND_ACC_ABSTRACT) {
|
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);
|
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);
|
current_this = EG(This);
|
||||||
EG(This) = EX(object);
|
EG(This) = EX(object);
|
||||||
current_scope = EG(scope);
|
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 {
|
} else {
|
||||||
should_change_scope = 0;
|
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(This)) {
|
||||||
if (EG(exception) && EX(fbc) && EX(fbc)->common.fn_flags&ZEND_ACC_CTOR) {
|
if (EG(exception) && ctor_opline) {
|
||||||
|
if (RETURN_VALUE_USED(ctor_opline)) {
|
||||||
EG(This)->refcount--;
|
EG(This)->refcount--;
|
||||||
|
}
|
||||||
if (EG(This)->refcount == 1) {
|
if (EG(This)->refcount == 1) {
|
||||||
zend_object_store_ctor_failed(EG(This) TSRMLS_CC);
|
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));
|
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(This) = current_this;
|
||||||
EG(scope) = current_scope;
|
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);
|
EX(function_state).function = (zend_function *) EX(op_array);
|
||||||
EG(function_state_ptr) = &EX(function_state);
|
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_ptr = &EX_T(opline->result.u.var).var.ptr;
|
||||||
EX_T(opline->result.u.var).var.ptr = object_zval;
|
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 */
|
/* We are not handling overloaded classes right now */
|
||||||
EX(object) = object_zval;
|
EX(object) = object_zval;
|
||||||
EX(fbc) = constructor;
|
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();
|
ZEND_VM_NEXT_OPCODE();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -548,10 +546,15 @@ static int ZEND_HANDLE_EXCEPTION_SPEC_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
}
|
}
|
||||||
|
|
||||||
while (EX(fbc)) {
|
while (EX(fbc)) {
|
||||||
|
zend_op *ctor_opline = (zend_op*)zend_ptr_stack_pop(&EG(arg_types_stack));
|
||||||
|
|
||||||
if (EX(object)) {
|
if (EX(object)) {
|
||||||
|
if (ctor_opline && RETURN_VALUE_USED(ctor_opline)) {
|
||||||
|
EX(object)->refcount--;
|
||||||
|
}
|
||||||
zval_ptr_dtor(&EX(object));
|
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 */
|
/* 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;
|
zval *function_name;
|
||||||
zend_class_entry *ce;
|
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;
|
ce = EX_T(opline->op1.u.var).class_entry;
|
||||||
if(IS_CONST != IS_UNUSED) {
|
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(fbc) = ce->constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
|
|
||||||
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -686,7 +687,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
int function_name_strlen;
|
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) {
|
if (IS_CONST == IS_CONST) {
|
||||||
function_name_strval = opline->op2.u.constant.value.str.val;
|
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(object) = NULL;
|
||||||
|
|
||||||
EX(fbc) = function;
|
EX(fbc) = function;
|
||||||
|
@ -826,7 +826,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARG
|
||||||
zval *function_name;
|
zval *function_name;
|
||||||
zend_class_entry *ce;
|
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;
|
ce = EX_T(opline->op1.u.var).class_entry;
|
||||||
if(IS_TMP_VAR != IS_UNUSED) {
|
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(fbc) = ce->constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
|
|
||||||
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -883,7 +881,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
int function_name_strlen;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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) {
|
if (IS_TMP_VAR == IS_CONST) {
|
||||||
function_name_strval = opline->op2.u.constant.value.str.val;
|
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);
|
zval_dtor(free_op2.var);
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = function->common.scope;
|
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
|
|
||||||
EX(fbc) = function;
|
EX(fbc) = function;
|
||||||
|
@ -980,7 +977,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARG
|
||||||
zval *function_name;
|
zval *function_name;
|
||||||
zend_class_entry *ce;
|
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;
|
ce = EX_T(opline->op1.u.var).class_entry;
|
||||||
if(IS_VAR != IS_UNUSED) {
|
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(fbc) = ce->constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
|
|
||||||
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1037,7 +1032,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
int function_name_strlen;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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) {
|
if (IS_VAR == IS_CONST) {
|
||||||
function_name_strval = opline->op2.u.constant.value.str.val;
|
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);};
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = function->common.scope;
|
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
|
|
||||||
EX(fbc) = function;
|
EX(fbc) = function;
|
||||||
|
@ -1133,7 +1127,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_
|
||||||
zval *function_name;
|
zval *function_name;
|
||||||
zend_class_entry *ce;
|
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;
|
ce = EX_T(opline->op1.u.var).class_entry;
|
||||||
if(IS_UNUSED != IS_UNUSED) {
|
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(fbc) = ce->constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
|
|
||||||
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1216,7 +1208,7 @@ static int ZEND_INIT_STATIC_METHOD_CALL_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS
|
||||||
zval *function_name;
|
zval *function_name;
|
||||||
zend_class_entry *ce;
|
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;
|
ce = EX_T(opline->op1.u.var).class_entry;
|
||||||
if(IS_CV != IS_UNUSED) {
|
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(fbc) = ce->constructor;
|
||||||
}
|
}
|
||||||
|
|
||||||
EX(calling_scope) = EX(fbc)->common.scope;
|
|
||||||
|
|
||||||
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
if (EX(fbc)->common.fn_flags & ZEND_ACC_STATIC) {
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1273,7 +1263,7 @@ static int ZEND_INIT_FCALL_BY_NAME_SPEC_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
|
||||||
int function_name_strlen;
|
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) {
|
if (IS_CV == IS_CONST) {
|
||||||
function_name_strval = opline->op2.u.constant.value.str.val;
|
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(object) = NULL;
|
||||||
|
|
||||||
EX(fbc) = function;
|
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;
|
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) {
|
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);
|
zend_error_noreturn(E_ERROR, "Unknown function: %s()", fname->value.str.val);
|
||||||
}
|
}
|
||||||
EX(object) = NULL;
|
EX(object) = NULL;
|
||||||
EX(calling_scope) = EX(function_state).function->common.scope;
|
|
||||||
|
|
||||||
return zend_do_fcall_common_helper_SPEC(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1;
|
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;
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1, free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);
|
zval_dtor(free_op2.var);
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1, free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);};
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1;
|
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;
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);};
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1, free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);
|
zval_dtor(free_op2.var);
|
||||||
if (free_op1.var) {zval_ptr_dtor(&free_op1.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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1, free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||||
if (free_op1.var) {zval_ptr_dtor(&free_op1.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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op1;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);};
|
if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
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;
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
function_name_strlen = function_name->value.str.len;
|
||||||
|
|
||||||
EX(calling_scope) = EG(scope);
|
|
||||||
|
|
||||||
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
function_name_strlen = function_name->value.str.len;
|
||||||
|
|
||||||
EX(calling_scope) = EG(scope);
|
|
||||||
|
|
||||||
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);
|
zval_dtor(free_op2.var);
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
function_name_strlen = function_name->value.str.len;
|
||||||
|
|
||||||
EX(calling_scope) = EG(scope);
|
|
||||||
|
|
||||||
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);};
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
function_name_strlen = function_name->value.str.len;
|
||||||
|
|
||||||
EX(calling_scope) = EG(scope);
|
|
||||||
|
|
||||||
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
EX(object) = _get_obj_zval_ptr_unused(TSRMLS_C);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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();
|
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;
|
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;
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);
|
zval_dtor(free_op2.var);
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
int function_name_strlen;
|
||||||
zend_free_op free_op2;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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);};
|
if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
|
||||||
|
|
||||||
ZEND_VM_NEXT_OPCODE();
|
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;
|
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);
|
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_strval = function_name->value.str.val;
|
||||||
function_name_strlen = function_name->value.str.len;
|
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);
|
EX(object) = _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC);
|
||||||
|
|
||||||
if (EX(object) && EX(object)->type == IS_OBJECT) {
|
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();
|
ZEND_VM_NEXT_OPCODE();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue