diff --git a/ext/standard/array.c b/ext/standard/array.c index fb3120f445264..7118eb843ce0a 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -5986,15 +5986,15 @@ PHP_FUNCTION(array_reduce) ZVAL_COPY(&args[1], operand); fci.params = args; + zval_ptr_dtor(&result); + if (zend_call_function(&fci, &fci_cache) == SUCCESS && Z_TYPE(retval) != IS_UNDEF) { zval_ptr_dtor(&args[1]); zval_ptr_dtor(&args[0]); - zval_ptr_dtor(&result); ZVAL_COPY_VALUE(&result, &retval); } else { zval_ptr_dtor(&args[1]); zval_ptr_dtor(&args[0]); - zval_ptr_dtor(&result); return; } } ZEND_HASH_FOREACH_END();