From 75a4f484f058f50fa1bb70c1eb5388409910203b Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Mon, 1 Mar 2021 15:01:09 +0100 Subject: Fixed bug #80811 When filling in defaults for skipped params, make sure that reference parameters get the expected reference wrapper. --- Zend/tests/bug80811.phpt | 19 +++++++++++++++++++ Zend/zend_execute.c | 3 +++ 2 files changed, 22 insertions(+) create mode 100644 Zend/tests/bug80811.phpt (limited to 'Zend') diff --git a/Zend/tests/bug80811.phpt b/Zend/tests/bug80811.phpt new file mode 100644 index 0000000000..e9f6443db1 --- /dev/null +++ b/Zend/tests/bug80811.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #80811: Function exec without $output but with $restult_code parameter crashes +--FILE-- + +--EXPECT-- +Executing with all params: +int(0) +Executing without output param: +int(0) diff --git a/Zend/zend_execute.c b/Zend/zend_execute.c index f6b2a6f9be..69b0fb5242 100644 --- a/Zend/zend_execute.c +++ b/Zend/zend_execute.c @@ -4579,6 +4579,9 @@ ZEND_API zend_result ZEND_FASTCALL zend_handle_undef_args(zend_execute_data *cal } ZVAL_COPY_VALUE(arg, &default_value); + if (ZEND_ARG_SEND_MODE(arg_info) & ZEND_SEND_BY_REF) { + ZVAL_NEW_REF(arg, arg); + } } } -- cgit v1.2.1