if (UNEXPECTED(EX(symbol_table) != NULL)) {
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
}
- if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) != 0) && EX(func)->op_array.prototype) {
- zval_ptr_dtor((zval*)EX(func)->op_array.prototype);
- }
zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
EG(current_execute_data) = EX(prev_execute_data);
+ if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) != 0) && EX(func)->op_array.prototype) {
+ OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
+ }
zend_vm_stack_free_call_frame(execute_data TSRMLS_CC);
execute_data = EG(current_execute_data);
if (UNEXPECTED(EX(symbol_table) != NULL)) {
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
}
+ zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
+ EG(current_execute_data) = EX(prev_execute_data);
if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
- zval_ptr_dtor((zval*)EX(func)->op_array.prototype);
+ OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
}
- zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
} else /* if (frame_kind == VM_FRAME_TOP_CODE) */ {
zend_array *symbol_table = EX(symbol_table);
zend_execute_data *old_execute_data;
}
old_execute_data = old_execute_data->prev_execute_data;
}
+ EG(current_execute_data) = EX(prev_execute_data);
}
- EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_call_frame(execute_data TSRMLS_CC);
ZEND_VM_RETURN();
if (OP2_TYPE == IS_VAR && OP2_FREE && Z_REFCOUNT_P(function_name) == 1 &&
fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)function_name_ptr;
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
} else {
FREE_OP2();
}
zend_error_noreturn(E_ERROR, "Array callback has to contain indices 0 and 1");
}
+ ZVAL_DEREF(obj);
if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
zend_error_noreturn(E_ERROR, "First array member is not a valid class name or object");
}
+ ZVAL_DEREF(method);
if (Z_TYPE_P(method) != IS_STRING) {
zend_error_noreturn(E_ERROR, "Second array member is not a valid method");
}
if (UNEXPECTED(EX(symbol_table) != NULL)) {
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
}
- if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) != 0) && EX(func)->op_array.prototype) {
- zval_ptr_dtor((zval*)EX(func)->op_array.prototype);
- }
zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
EG(current_execute_data) = EX(prev_execute_data);
+ if (UNEXPECTED((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) != 0) && EX(func)->op_array.prototype) {
+ OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
+ }
zend_vm_stack_free_call_frame(execute_data TSRMLS_CC);
execute_data = EG(current_execute_data);
if (UNEXPECTED(EX(symbol_table) != NULL)) {
zend_clean_and_cache_symbol_table(EX(symbol_table) TSRMLS_CC);
}
+ zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
+ EG(current_execute_data) = EX(prev_execute_data);
if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
- zval_ptr_dtor((zval*)EX(func)->op_array.prototype);
+ OBJ_RELEASE((zend_object*)EX(func)->op_array.prototype);
}
- zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
} else /* if (frame_kind == VM_FRAME_TOP_CODE) */ {
zend_array *symbol_table = EX(symbol_table);
zend_execute_data *old_execute_data;
}
old_execute_data = old_execute_data->prev_execute_data;
}
+ EG(current_execute_data) = EX(prev_execute_data);
}
- EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_call_frame(execute_data TSRMLS_CC);
ZEND_VM_RETURN();
if (IS_CONST == IS_VAR && 0 && Z_REFCOUNT_P(function_name) == 1 &&
fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)function_name_ptr;
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
} else {
}
zend_error_noreturn(E_ERROR, "Array callback has to contain indices 0 and 1");
}
+ ZVAL_DEREF(obj);
if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
zend_error_noreturn(E_ERROR, "First array member is not a valid class name or object");
}
+ ZVAL_DEREF(method);
if (Z_TYPE_P(method) != IS_STRING) {
zend_error_noreturn(E_ERROR, "Second array member is not a valid method");
}
if (IS_TMP_VAR == IS_VAR && 1 && Z_REFCOUNT_P(function_name) == 1 &&
fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)function_name_ptr;
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
} else {
zval_dtor(free_op2.var);
}
zend_error_noreturn(E_ERROR, "Array callback has to contain indices 0 and 1");
}
+ ZVAL_DEREF(obj);
if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
zend_error_noreturn(E_ERROR, "First array member is not a valid class name or object");
}
+ ZVAL_DEREF(method);
if (Z_TYPE_P(method) != IS_STRING) {
zend_error_noreturn(E_ERROR, "Second array member is not a valid method");
}
if (IS_VAR == IS_VAR && (free_op2.var != NULL) && Z_REFCOUNT_P(function_name) == 1 &&
fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)function_name_ptr;
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
} else {
zval_ptr_dtor_nogc(free_op2.var);
}
zend_error_noreturn(E_ERROR, "Array callback has to contain indices 0 and 1");
}
+ ZVAL_DEREF(obj);
if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
zend_error_noreturn(E_ERROR, "First array member is not a valid class name or object");
}
+ ZVAL_DEREF(method);
if (Z_TYPE_P(method) != IS_STRING) {
zend_error_noreturn(E_ERROR, "Second array member is not a valid method");
}
if (IS_CV == IS_VAR && 0 && Z_REFCOUNT_P(function_name) == 1 &&
fbc->common.fn_flags & ZEND_ACC_CLOSURE) {
/* Delay closure destruction until its invocation */
- fbc->common.prototype = (zend_function*)function_name_ptr;
+ fbc->common.prototype = (zend_function*)Z_OBJ_P(function_name_ptr);
} else {
}
zend_error_noreturn(E_ERROR, "Array callback has to contain indices 0 and 1");
}
+ ZVAL_DEREF(obj);
if (Z_TYPE_P(obj) != IS_STRING && Z_TYPE_P(obj) != IS_OBJECT) {
zend_error_noreturn(E_ERROR, "First array member is not a valid class name or object");
}
+ ZVAL_DEREF(method);
if (Z_TYPE_P(method) != IS_STRING) {
zend_error_noreturn(E_ERROR, "Second array member is not a valid method");
}