EX(object).ptr = this_ptr;
}
EX(fbc) = Z_OBJCE_P(EX(object).ptr)->constructor;
+ EX(calling_namespace) = Z_OBJCE_P(EX(object).ptr);
NEXT_OPCODE();
}
function_name = get_zval_ptr(&EX(opline)->op2, EX(Ts), &EG(free_op2), BP_VAR_R);
int (*orig_unary_op)(zval *result, zval *op1);
int (*orig_binary_op)(zval *result, zval *op1, zval *op2 TSRMLS_DC);
zval function_name_copy;
+ zend_class_entry *current_namespace;
+ zend_class_entry *calling_namespace = NULL;
*retval_ptr_ptr = NULL;
if (object_pp) {
if (Z_TYPE_PP(object_pp) == IS_OBJECT) {
function_table = &Z_OBJCE_PP(object_pp)->function_table;
+ calling_namespace = Z_OBJCE_PP(object_pp);
} else if (Z_TYPE_PP(object_pp) == IS_STRING) {
zend_class_entry *ce;
char *lc_class;
return FAILURE;
function_table = &ce->function_table;
+ calling_namespace = ce;
object_pp = NULL;
} else
return FAILURE;
EG(function_state_ptr) = &function_state;
+ current_namespace = EG(namespace);
+ EG(namespace) = calling_namespace;
+
if (function_state.function->type == ZEND_USER_FUNCTION) {
calling_symbol_table = EG(active_symbol_table);
if (symbol_table) {
zend_ptr_stack_clear_multiple(TSRMLS_C);
EG(function_state_ptr) = original_function_state_ptr;
+ EG(namespace) = current_namespace;
+
return SUCCESS;
}