From 0a6ddc77224f86cef4f08c662bd96ede11616c8e Mon Sep 17 00:00:00 2001 From: Michael Moravec Date: Sat, 6 Oct 2018 00:07:41 +0200 Subject: [PATCH] Fix bug #76979: define() error message does not mention resources as valid values --- NEWS | 2 ++ Zend/tests/008.phpt | 6 ++++-- Zend/tests/bug37811.phpt | 2 +- Zend/tests/constant_arrays.phpt | 2 +- Zend/tests/constants_002.phpt | 2 +- Zend/zend_builtin_functions.c | 4 ++-- 6 files changed, 11 insertions(+), 7 deletions(-) diff --git a/NEWS b/NEWS index 2da778d168d..c3dd3cbae46 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,8 @@ PHP NEWS generates fatal error). (Nikita) . Fixed bug #76947 (file_put_contents() blocks the directory of the file (__DIR__)). (Anatol) + . Fixed bug #76979 (define() error message does not mention resources as + valid values). (Michael Moravec) - FCGI: . Fixed #76948 (Failed shutdown/reboot or end session in Windows). (Anatol) diff --git a/Zend/tests/008.phpt b/Zend/tests/008.phpt index 297856ec238..a3a3e02fccc 100644 --- a/Zend/tests/008.phpt +++ b/Zend/tests/008.phpt @@ -14,7 +14,8 @@ var_dump(define("[[[", 2)); var_dump(define("test const", 3)); var_dump(define("test const", 3)); var_dump(define("test", array(1))); -var_dump(define("test1", new stdclass)); +var_dump(define("test1", fopen(__FILE__, 'r'))); +var_dump(define("test2", new stdclass)); var_dump(constant(" ")); var_dump(constant("[[[")); @@ -42,8 +43,9 @@ bool(true) Notice: Constant test const already defined in %s on line %d bool(false) bool(true) +bool(true) -Warning: Constants may only evaluate to scalar values or arrays in %s on line %d +Warning: Constants may only evaluate to scalar values, arrays or resources in %s on line %d bool(false) int(1) int(2) diff --git a/Zend/tests/bug37811.phpt b/Zend/tests/bug37811.phpt index 299018363de..96645d03542 100644 --- a/Zend/tests/bug37811.phpt +++ b/Zend/tests/bug37811.phpt @@ -21,7 +21,7 @@ var_dump(Baz); --EXPECTF-- string(3) "Foo" -Warning: Constants may only evaluate to scalar values or arrays in %sbug37811.php on line %d +Warning: Constants may only evaluate to scalar values, arrays or resources in %sbug37811.php on line %d Warning: Use of undefined constant Baz - assumed 'Baz' (this will throw an Error in a future version of PHP) in %sbug37811.php on line %d string(3) "Baz" diff --git a/Zend/tests/constant_arrays.phpt b/Zend/tests/constant_arrays.phpt index 46a0f9252e5..9e099e33fcf 100644 --- a/Zend/tests/constant_arrays.phpt +++ b/Zend/tests/constant_arrays.phpt @@ -94,7 +94,7 @@ array(1) { int(7) } -Warning: Constants may only evaluate to scalar values or arrays in %s on line %d +Warning: Constants may only evaluate to scalar values, arrays or resources in %s on line %d bool(false) Warning: Constants cannot be recursive arrays in %s on line %d diff --git a/Zend/tests/constants_002.phpt b/Zend/tests/constants_002.phpt index 832da1564df..b0cf1db61fd 100644 --- a/Zend/tests/constants_002.phpt +++ b/Zend/tests/constants_002.phpt @@ -11,7 +11,7 @@ var_dump(foo); ?> --EXPECTF-- -Warning: Constants may only evaluate to scalar values or arrays in %s on line %d +Warning: Constants may only evaluate to scalar values, arrays or resources in %s on line %d Warning: Use of undefined constant foo - assumed 'foo' (this will throw an Error in a future version of PHP) in %s on line %d string(%d) "foo" diff --git a/Zend/zend_builtin_functions.c b/Zend/zend_builtin_functions.c index 96d5127711e..a603b1d89a3 100644 --- a/Zend/zend_builtin_functions.c +++ b/Zend/zend_builtin_functions.c @@ -794,7 +794,7 @@ static int validate_constant_array(HashTable *ht) /* {{{ */ } } } else if (Z_TYPE_P(val) != IS_STRING && Z_TYPE_P(val) != IS_RESOURCE) { - zend_error(E_WARNING, "Constants may only evaluate to scalar values or arrays"); + zend_error(E_WARNING, "Constants may only evaluate to scalar values, arrays or resources"); ret = 0; break; } @@ -895,7 +895,7 @@ repeat: } /* no break */ default: - zend_error(E_WARNING, "Constants may only evaluate to scalar values or arrays"); + zend_error(E_WARNING, "Constants may only evaluate to scalar values, arrays or resources"); zval_ptr_dtor(&val_free); RETURN_FALSE; }