From: Nikita Popov Date: Wed, 3 Oct 2018 08:48:42 +0000 (+0200) Subject: Reflection: Copy invoke function also in the variadic case X-Git-Tag: php-7.1.24RC1~30 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=945f315506538208705d370f39a6896371e48ebb;p=php Reflection: Copy invoke function also in the variadic case It doesn't matter how the parameters are provided, we always have to copy the trampoline invoke function. --- diff --git a/ext/reflection/php_reflection.c b/ext/reflection/php_reflection.c index bd2d824c38..34082f04cd 100644 --- a/ext/reflection/php_reflection.c +++ b/ext/reflection/php_reflection.c @@ -3332,13 +3332,11 @@ static void reflection_method_invoke(INTERNAL_FUNCTION_PARAMETERS, int variadic) fcc.called_scope = intern->ce; fcc.object = object ? Z_OBJ_P(object) : NULL; - if (!variadic) { - /* - * Copy the zend_function when calling via handler (e.g. Closure::__invoke()) - */ - if ((mptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { - fcc.function_handler = _copy_function(mptr); - } + /* + * Copy the zend_function when calling via handler (e.g. Closure::__invoke()) + */ + if ((mptr->internal_function.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) { + fcc.function_handler = _copy_function(mptr); } result = zend_call_function(&fci, &fcc);