/* Do not display old-style inherited constructors */
if (!key) {
-// TODO: we have to duplicate it, becaise it may be stored in opcache SHM ???
- ZVAL_STR(&method_name, STR_DUP(mptr->common.function_name, 0));
+ ZVAL_STR(&method_name, STR_COPY(mptr->common.function_name));
zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name);
} else if ((mptr->common.fn_flags & ZEND_ACC_CTOR) == 0 ||
mptr->common.scope == ce ||
ZVAL_STR(&method_name, STR_COPY(zend_find_alias_name(mptr->common.scope, key)));
zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name);
} else {
-// TODO: we have to duplicate it, becaise it may be stored in opcache SHM ???
- ZVAL_STR(&method_name, STR_DUP(mptr->common.function_name, 0));
+ ZVAL_STR(&method_name, STR_COPY(mptr->common.function_name));
zend_hash_next_index_insert_new(Z_ARRVAL_P(return_value), &method_name);
}
}
break;
}
if (prev->func && ZEND_USER_CODE(prev->func->common.type)) {
-// TODO: we have to duplicate it, becaise it may be stored in opcache SHM ???
- add_assoc_str_ex(&stack_frame, "file", sizeof("file")-1, STR_DUP(prev->func->op_array.filename, 0));
+ add_assoc_str_ex(&stack_frame, "file", sizeof("file")-1, STR_COPY(prev->func->op_array.filename));
add_assoc_long_ex(&stack_frame, "line", sizeof("line")-1, prev->opline->lineno);
break;
}
array_init(return_value);
array = 1;
}
-// TODO: we have to duplicate it, becaise it may be stored in opcache SHM ???
- add_next_index_str(return_value, STR_DUP(zif->common.function_name, 0));
+ add_next_index_str(return_value, STR_COPY(zif->common.function_name));
}
} ZEND_HASH_FOREACH_END();
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);
}
- EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
+ EG(current_execute_data) = EX(prev_execute_data);
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);
}
+ if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
+ zval_ptr_dtor((zval*)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);
old_execute_data = old_execute_data->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);
- }
EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_call_frame(execute_data TSRMLS_CC);
}
} else { /* ZEND_OVERLOADED_FUNCTION */
Z_OBJ(EG(This)) = call->object;
-//??? EG(scope) = NULL;
EG(scope) = fbc->common.scope;
ZVAL_NULL(EX_VAR(opline->result.var));
ZVAL_DUP(top, arg);
}
} else if (Z_ISREF_P(arg)) {
-//TODO: change into ZVAL_COPY()???
- ZVAL_DUP(top, Z_REFVAL_P(arg));
+ ZVAL_COPY(top, Z_REFVAL_P(arg));
} else {
ZVAL_COPY(top, arg);
}
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);
}
- EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_extra_args(execute_data TSRMLS_CC);
+ EG(current_execute_data) = EX(prev_execute_data);
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);
}
+ if ((EX(func)->op_array.fn_flags & ZEND_ACC_CLOSURE) && EX(func)->op_array.prototype) {
+ zval_ptr_dtor((zval*)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);
old_execute_data = old_execute_data->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);
- }
EG(current_execute_data) = EX(prev_execute_data);
zend_vm_stack_free_call_frame(execute_data TSRMLS_CC);
}
} else { /* ZEND_OVERLOADED_FUNCTION */
Z_OBJ(EG(This)) = call->object;
-//??? EG(scope) = NULL;
EG(scope) = fbc->common.scope;
ZVAL_NULL(EX_VAR(opline->result.var));
ZVAL_DUP(top, arg);
}
} else if (Z_ISREF_P(arg)) {
-//TODO: change into ZVAL_COPY()???
- ZVAL_DUP(top, Z_REFVAL_P(arg));
+ ZVAL_COPY(top, Z_REFVAL_P(arg));
} else {
ZVAL_COPY(top, arg);
}