mirror of
https://github.com/php/php-src.git
synced 2024-09-21 18:07:23 +00:00
Merge branch 'PHP-8.1' into PHP-8.2
* PHP-8.1: Fix filter_var with callback and explicit REQUIRE_SCALAR
This commit is contained in:
commit
85ceb91789
3
NEWS
3
NEWS
@ -21,6 +21,9 @@ PHP NEWS
|
||||
- DOM:
|
||||
. Fix memory leak when setting an invalid DOMDocument encoding. (nielsdos)
|
||||
|
||||
- Filter:
|
||||
. Fix explicit FILTER_REQUIRE_SCALAR with FILTER_CALLBACK (ilutov)
|
||||
|
||||
- Iconv:
|
||||
. Fixed build for NetBSD which still uses the old iconv signature.
|
||||
(David Carlier)
|
||||
|
@ -484,14 +484,6 @@ static void php_filter_call(
|
||||
filter = zval_get_long(option);
|
||||
}
|
||||
|
||||
if ((option = zend_hash_str_find(filter_args_ht, "flags", sizeof("flags") - 1)) != NULL) {
|
||||
filter_flags = zval_get_long(option);
|
||||
|
||||
if (!(filter_flags & FILTER_REQUIRE_ARRAY || filter_flags & FILTER_FORCE_ARRAY)) {
|
||||
filter_flags |= FILTER_REQUIRE_SCALAR;
|
||||
}
|
||||
}
|
||||
|
||||
if ((option = zend_hash_str_find_deref(filter_args_ht, "options", sizeof("options") - 1)) != NULL) {
|
||||
if (filter != FILTER_CALLBACK) {
|
||||
if (Z_TYPE_P(option) == IS_ARRAY) {
|
||||
@ -502,6 +494,14 @@ static void php_filter_call(
|
||||
filter_flags = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if ((option = zend_hash_str_find(filter_args_ht, "flags", sizeof("flags") - 1)) != NULL) {
|
||||
filter_flags = zval_get_long(option);
|
||||
|
||||
if (!(filter_flags & FILTER_REQUIRE_ARRAY || filter_flags & FILTER_FORCE_ARRAY)) {
|
||||
filter_flags |= FILTER_REQUIRE_SCALAR;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (Z_TYPE_P(filtered) == IS_ARRAY) {
|
||||
|
18
ext/filter/tests/filter_callback_require_scalar.phpt
Normal file
18
ext/filter/tests/filter_callback_require_scalar.phpt
Normal file
@ -0,0 +1,18 @@
|
||||
--TEST--
|
||||
FILTER_CALLBACK with explicit FILTER_REQUIRE_SCALAR
|
||||
--EXTENSIONS--
|
||||
filter
|
||||
--FILE--
|
||||
<?php
|
||||
function test($var) {
|
||||
$callback = function ($var) {
|
||||
return $var;
|
||||
};
|
||||
return filter_var($var, FILTER_CALLBACK, ['options' => $callback, 'flags' => FILTER_REQUIRE_SCALAR]);
|
||||
}
|
||||
var_dump(test('test'));
|
||||
var_dump(test(['test']));
|
||||
?>
|
||||
--EXPECT--
|
||||
string(4) "test"
|
||||
bool(false)
|
Loading…
Reference in New Issue
Block a user