diff --git a/extension/xhprof.c b/extension/xhprof.c --- a/extension/xhprof.c +++ b/extension/xhprof.c @@ -1703,8 +1703,30 @@ if (!_zend_execute_internal) { /* no old override to begin with. so invoke the builtin's implementation */ + +#if ZEND_EXTENSION_API_NO >= 220121212 + /* PHP 5.5. This is just inlining a copy of execute_internal(). */ + + if (fci != NULL) { + ((zend_internal_function *) execute_data->function_state.function)->handler( + fci->param_count, + *fci->retval_ptr_ptr, + fci->retval_ptr_ptr, + fci->object_ptr, + 1 TSRMLS_CC); + } else { + zval **return_value_ptr = &EX_TMP_VAR(execute_data, execute_data->opline->result.var)->var.ptr; + ((zend_internal_function *) execute_data->function_state.function)->handler( + execute_data->opline->extended_value, + *return_value_ptr, + (execute_data->function_state.function->common.fn_flags & ZEND_ACC_RETURN_REFERENCE) + ? return_value_ptr + : NULL, + execute_data->object, + ret TSRMLS_CC); + } +#elif ZEND_EXTENSION_API_NO >= 220100525 zend_op *opline = EX(opline); -#if ZEND_EXTENSION_API_NO >= 220100525 temp_variable *retvar = &EX_T(opline->result.var); ((zend_internal_function *) EX(function_state).function)->handler( opline->extended_value, @@ -1713,6 +1735,7 @@ &retvar->var.ptr:NULL, EX(object), ret TSRMLS_CC); #else + zend_op *opline = EX(opline); ((zend_internal_function *) EX(function_state).function)->handler( opline->extended_value, EX_T(opline->result.u.var).var.ptr,