From b060d16eb9c0adb56e0a89db7973bdd57e25f858 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sat, 28 Sep 2024 22:07:39 +0100 Subject: [PATCH 1/2] ext/standard: Add test for headers_sent() by ref args --- .../headers_sent_by_ref_args.phpt | 110 ++++++++++++++++++ 1 file changed, 110 insertions(+) create mode 100644 ext/standard/tests/general_functions/headers_sent_by_ref_args.phpt diff --git a/ext/standard/tests/general_functions/headers_sent_by_ref_args.phpt b/ext/standard/tests/general_functions/headers_sent_by_ref_args.phpt new file mode 100644 index 0000000000000..c59b7acd00136 --- /dev/null +++ b/ext/standard/tests/general_functions/headers_sent_by_ref_args.phpt @@ -0,0 +1,110 @@ +--TEST-- +headers_sent() by-ref argument with named arguments +--FILE-- + +--EXPECTF-- +headers_sent(): +bool(false) +headers_list(): +array(0) { +} +$file: +NULL +$line: +int(0) +headers_sent(): +bool(false) +headers_list(): +array(0) { +} +$file: +string(0) "" +$line: +NULL +header(): +NULL +headers_sent(): +bool(true) +headers_list(): +array(0) { +} +$file: +NULL +$line: +int(36) +headers_sent(): +bool(true) +headers_list(): +array(0) { +} +$file: +string(%d) "%s" +$line: +NULL +Done From d344a0849fa6fc9f2493aada7e72e038e0771b27 Mon Sep 17 00:00:00 2001 From: Gina Peter Banyard Date: Sat, 28 Sep 2024 22:14:19 +0100 Subject: [PATCH 2/2] ext/standard/head.c: no need to rely on ZEND_NUM_ARGS() --- ext/standard/head.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/ext/standard/head.c b/ext/standard/head.c index ccef4be16bdfd..13e79804135a7 100644 --- a/ext/standard/head.c +++ b/ext/standard/head.c @@ -294,14 +294,15 @@ PHP_FUNCTION(setrawcookie) /* {{{ Returns true if headers have already been sent, false otherwise */ PHP_FUNCTION(headers_sent) { - zval *arg1 = NULL, *arg2 = NULL; - const char *file=""; - int line=0; + zval *by_ref_filename = NULL; + zval *by_ref_line = NULL; + const char *file = ""; + int line = 0; ZEND_PARSE_PARAMETERS_START(0, 2) Z_PARAM_OPTIONAL - Z_PARAM_ZVAL(arg1) - Z_PARAM_ZVAL(arg2) + Z_PARAM_ZVAL(by_ref_filename) + Z_PARAM_ZVAL(by_ref_line) ZEND_PARSE_PARAMETERS_END(); if (SG(headers_sent)) { @@ -309,24 +310,18 @@ PHP_FUNCTION(headers_sent) file = php_output_get_start_filename(); } - switch(ZEND_NUM_ARGS()) { - case 2: - ZEND_TRY_ASSIGN_REF_LONG(arg2, line); - ZEND_FALLTHROUGH; - case 1: + if (by_ref_filename) { if (file) { - ZEND_TRY_ASSIGN_REF_STRING(arg1, file); + ZEND_TRY_ASSIGN_REF_STRING(by_ref_filename, file); } else { - ZEND_TRY_ASSIGN_REF_EMPTY_STRING(arg1); + ZEND_TRY_ASSIGN_REF_EMPTY_STRING(by_ref_filename); } - break; } - - if (SG(headers_sent)) { - RETURN_TRUE; - } else { - RETURN_FALSE; + if (by_ref_line) { + ZEND_TRY_ASSIGN_REF_LONG(by_ref_line, line); } + + RETURN_BOOL(SG(headers_sent)); } /* }}} */