mirror of
https://github.com/php/php-src.git
synced 2025-08-15 13:38:49 +02:00
Deprecate passing null to non-nullable arg of internal function
This deprecates passing null to non-nullable scale arguments of internal functions, with the eventual goal of making the behavior consistent with userland functions, where null is never accepted for non-nullable arguments. This change is expected to cause quite a lot of fallout. In most cases, calling code should be adjusted to avoid passing null. In some cases, PHP should be adjusted to make some function arguments nullable. I have already fixed a number of functions before landing this, but feel free to file a bug if you encounter a function that doesn't accept null, but probably should. (The rule of thumb for this to be applicable is that the function must have special behavior for 0 or "", which is distinct from the natural behavior of the parameter.) RFC: https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg Closes GH-6475.
This commit is contained in:
parent
f06895488a
commit
b10416a652
314 changed files with 1091 additions and 6282 deletions
10
UPGRADING
10
UPGRADING
|
@ -27,6 +27,16 @@ PHP 8.1 UPGRADE NOTES
|
||||||
array is no longer supported. For example, array_pop($GLOBALS) will result
|
array is no longer supported. For example, array_pop($GLOBALS) will result
|
||||||
in an error.
|
in an error.
|
||||||
RFC: https://wiki.php.net/rfc/restrict_globals_usage
|
RFC: https://wiki.php.net/rfc/restrict_globals_usage
|
||||||
|
. Passing null to a non-nullable argument of a built-in function is
|
||||||
|
deprecated. This matches the behavior of user-defined functions, where null
|
||||||
|
is never accepted by non-nullable arguments.
|
||||||
|
user-defined functions.
|
||||||
|
|
||||||
|
var_dump(str_contains("foobar", null));
|
||||||
|
// Deprecated: Passing null to parameter #2 ($needle) of type string
|
||||||
|
// is deprecated
|
||||||
|
|
||||||
|
RFC: https://wiki.php.net/rfc/deprecate_null_to_scalar_internal_arg
|
||||||
|
|
||||||
- Fileinfo:
|
- Fileinfo:
|
||||||
. The fileinfo functions now accept and return, respectively, finfo objects
|
. The fileinfo functions now accept and return, respectively, finfo objects
|
||||||
|
|
|
@ -30,25 +30,37 @@ Warning: Undefined variable $ref in %s on line %d
|
||||||
|
|
||||||
Warning: Undefined variable $undef in %s on line %d
|
Warning: Undefined variable $undef in %s on line %d
|
||||||
|
|
||||||
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
Deprecated: chop(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
Warning: Undefined variable $undef in %s on line %d
|
|
||||||
|
|
||||||
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
||||||
|
|
||||||
Warning: Undefined variable $undef in %s on line %d
|
Warning: Undefined variable $undef in %s on line %d
|
||||||
|
|
||||||
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
Deprecated: chop(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
Warning: Undefined variable $undef in %s on line %d
|
|
||||||
|
|
||||||
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
||||||
|
|
||||||
Warning: Undefined variable $undef in %s on line %d
|
Warning: Undefined variable $undef in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: chop(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
||||||
|
|
||||||
Warning: Undefined variable $undef in %s on line %d
|
Warning: Undefined variable $undef in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: chop(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
||||||
|
|
||||||
|
Warning: Undefined variable $undef in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: chop(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
||||||
|
|
||||||
|
Warning: Undefined variable $undef in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: chop(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
Notice: Indirect modification of overloaded property Foo::$arr has no effect in %sbug43201.php on line 17
|
||||||
ok
|
ok
|
||||||
|
|
|
@ -7,7 +7,7 @@ class cat {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$cat = new cat();
|
$cat = new cat();
|
||||||
$cat->show_output('Files: ', trim(`cd .`)); // this gives invalid args to shell_exec
|
$cat->show_output('Files: ', trim((string) `cd .`)); // this gives invalid args to shell_exec
|
||||||
$cat->show_output('Files: ', `cd .`); // this causes a segmentation fault
|
$cat->show_output('Files: ', `cd .`); // this causes a segmentation fault
|
||||||
$cat->show_output(`cd .`); // this causes a segmentation fault
|
$cat->show_output(`cd .`); // this causes a segmentation fault
|
||||||
|
|
||||||
|
|
|
@ -8,7 +8,6 @@ class foo {
|
||||||
}
|
}
|
||||||
|
|
||||||
var_dump(class_exists(''));
|
var_dump(class_exists(''));
|
||||||
var_dump(class_exists(NULL));
|
|
||||||
var_dump(class_exists('FOO'));
|
var_dump(class_exists('FOO'));
|
||||||
var_dump(class_exists('bar'));
|
var_dump(class_exists('bar'));
|
||||||
var_dump(class_exists(1));
|
var_dump(class_exists(1));
|
||||||
|
@ -16,7 +15,6 @@ var_dump(class_exists(1));
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
|
@ -7,7 +7,7 @@ try {
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
try {
|
try {
|
||||||
throw new Exception(NULL);
|
throw new Exception();
|
||||||
} catch (Exception $e) {
|
} catch (Exception $e) {
|
||||||
var_dump($e->getMessage());
|
var_dump($e->getMessage());
|
||||||
throw $e;
|
throw $e;
|
||||||
|
|
|
@ -8,10 +8,8 @@ interface foo {
|
||||||
|
|
||||||
var_dump(interface_exists('foo'));
|
var_dump(interface_exists('foo'));
|
||||||
var_dump(interface_exists(1));
|
var_dump(interface_exists(1));
|
||||||
var_dump(interface_exists(NULL));
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
|
|
12
Zend/tests/null_to_non_nullable_special_func.phpt
Normal file
12
Zend/tests/null_to_non_nullable_special_func.phpt
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
--TEST--
|
||||||
|
Test null arg behavior for special functions
|
||||||
|
--FILE--
|
||||||
|
<?php
|
||||||
|
|
||||||
|
$null = null;
|
||||||
|
var_dump(strlen($null));
|
||||||
|
|
||||||
|
?>
|
||||||
|
--EXPECTF--
|
||||||
|
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
|
int(0)
|
|
@ -38,14 +38,21 @@ dump_error(fn() => array_key_exists('foo', $foo?->foo()));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
|
Deprecated: strlen(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
int(0)
|
int(0)
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
||||||
|
Deprecated: defined(): Passing null to parameter #1 ($constant_name) of type string is deprecated in %s on line %d
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
||||||
|
Deprecated: chr(): Passing null to parameter #1 ($codepoint) of type int is deprecated in %s on line %d
|
||||||
string(1) "%s"
|
string(1) "%s"
|
||||||
|
|
||||||
|
Deprecated: ord(): Passing null to parameter #1 ($character) of type string is deprecated in %s on line %d
|
||||||
int(0)
|
int(0)
|
||||||
string(98) "call_user_func_array(): Argument #1 ($function) must be a valid callback, no array or string given"
|
string(98) "call_user_func_array(): Argument #1 ($function) must be a valid callback, no array or string given"
|
||||||
string(77) "call_user_func_array(): Argument #2 ($args) must be of type array, null given"
|
string(77) "call_user_func_array(): Argument #2 ($args) must be of type array, null given"
|
||||||
|
@ -55,6 +62,8 @@ string(4) "NULL"
|
||||||
string(52) "func_num_args() expects exactly 0 arguments, 1 given"
|
string(52) "func_num_args() expects exactly 0 arguments, 1 given"
|
||||||
string(52) "func_get_args() expects exactly 0 arguments, 1 given"
|
string(52) "func_get_args() expects exactly 0 arguments, 1 given"
|
||||||
string(69) "array_slice(): Argument #1 ($array) must be of type array, null given"
|
string(69) "array_slice(): Argument #1 ($array) must be of type array, null given"
|
||||||
|
|
||||||
|
Deprecated: array_slice(): Passing null to parameter #2 ($offset) of type int is deprecated in %s on line %d
|
||||||
array(1) {
|
array(1) {
|
||||||
[0]=>
|
[0]=>
|
||||||
string(3) "foo"
|
string(3) "foo"
|
||||||
|
|
|
@ -51,9 +51,11 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
string(6) "string"
|
string(6) "string"
|
||||||
string(1) "1"
|
string(1) "1"
|
||||||
|
|
||||||
|
Deprecated: zend_string_or_stdclass(): Passing null to parameter #1 ($param) of type string is deprecated in %s on line %d
|
||||||
string(0) ""
|
string(0) ""
|
||||||
object(stdClass)#1 (0) {
|
object(stdClass)#1 (0) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -34,9 +34,11 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
string(6) "string"
|
string(6) "string"
|
||||||
string(1) "1"
|
string(1) "1"
|
||||||
|
|
||||||
|
Deprecated: zend_string_or_object(): Passing null to parameter #1 ($param) of type object|string is deprecated in %s on line %d
|
||||||
string(0) ""
|
string(0) ""
|
||||||
object(stdClass)#1 (0) {
|
object(stdClass)#1 (0) {
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,10 +8,8 @@ trait foo {
|
||||||
|
|
||||||
var_dump(trait_exists('foo'));
|
var_dump(trait_exists('foo'));
|
||||||
var_dump(trait_exists(1));
|
var_dump(trait_exists(1));
|
||||||
var_dump(trait_exists(NULL));
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
|
|
|
@ -426,9 +426,41 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_class(zval *arg, zend_class_entry **p
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_weak(zval *arg, bool *dest) /* {{{ */
|
static ZEND_COLD bool zend_null_arg_deprecated(const char *fallback_type, uint32_t arg_num) {
|
||||||
|
zend_function *func = EG(current_execute_data)->func;
|
||||||
|
ZEND_ASSERT(arg_num > 0);
|
||||||
|
uint32_t arg_offset = arg_num - 1;
|
||||||
|
if (arg_offset >= func->common.num_args) {
|
||||||
|
ZEND_ASSERT(func->common.fn_flags & ZEND_ACC_VARIADIC);
|
||||||
|
arg_offset = func->common.num_args;
|
||||||
|
}
|
||||||
|
|
||||||
|
zend_arg_info *arg_info = &func->common.arg_info[arg_offset];
|
||||||
|
zend_string *func_name = get_active_function_or_method_name();
|
||||||
|
const char *arg_name = get_active_function_arg_name(arg_num);
|
||||||
|
|
||||||
|
/* If no type is specified in arginfo, use the specified fallback_type determined through
|
||||||
|
* zend_parse_parameters instead. */
|
||||||
|
zend_string *type_str = zend_type_to_string(arg_info->type);
|
||||||
|
const char *type = type_str ? ZSTR_VAL(type_str) : fallback_type;
|
||||||
|
zend_error(E_DEPRECATED,
|
||||||
|
"%s(): Passing null to parameter #%" PRIu32 "%s%s%s of type %s is deprecated",
|
||||||
|
ZSTR_VAL(func_name), arg_num,
|
||||||
|
arg_name ? " ($" : "", arg_name ? arg_name : "", arg_name ? ")" : "",
|
||||||
|
type);
|
||||||
|
zend_string_release(func_name);
|
||||||
|
if (type_str) {
|
||||||
|
zend_string_release(type_str);
|
||||||
|
}
|
||||||
|
return !EG(exception);
|
||||||
|
}
|
||||||
|
|
||||||
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_weak(zval *arg, bool *dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) <= IS_STRING)) {
|
if (EXPECTED(Z_TYPE_P(arg) <= IS_STRING)) {
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("bool", arg_num)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
*dest = zend_is_true(arg);
|
*dest = zend_is_true(arg);
|
||||||
} else {
|
} else {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -437,16 +469,16 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_weak(zval *arg, bool *dest) /* {
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_slow(zval *arg, bool *dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_slow(zval *arg, bool *dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return zend_parse_arg_bool_weak(arg, dest);
|
return zend_parse_arg_bool_weak(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak(zval *arg, zend_long *dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak(zval *arg, zend_long *dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_DOUBLE)) {
|
||||||
if (UNEXPECTED(zend_isnan(Z_DVAL_P(arg)))) {
|
if (UNEXPECTED(zend_isnan(Z_DVAL_P(arg)))) {
|
||||||
|
@ -479,6 +511,9 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak(zval *arg, zend_long *dest)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) {
|
} else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) {
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("int", arg_num)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
*dest = 0;
|
*dest = 0;
|
||||||
} else if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
|
} else if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
|
||||||
*dest = 1;
|
*dest = 1;
|
||||||
|
@ -489,16 +524,16 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak(zval *arg, zend_long *dest)
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_slow(zval *arg, zend_long *dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_slow(zval *arg, zend_long *dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return zend_parse_arg_long_weak(arg, dest);
|
return zend_parse_arg_long_weak(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak(zval *arg, double *dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak(zval *arg, double *dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
|
||||||
*dest = (double)Z_LVAL_P(arg);
|
*dest = (double)Z_LVAL_P(arg);
|
||||||
|
@ -517,6 +552,9 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak(zval *arg, double *dest)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
} else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) {
|
} else if (EXPECTED(Z_TYPE_P(arg) < IS_TRUE)) {
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("float", arg_num)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
*dest = 0.0;
|
*dest = 0.0;
|
||||||
} else if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
|
} else if (EXPECTED(Z_TYPE_P(arg) == IS_TRUE)) {
|
||||||
*dest = 1.0;
|
*dest = 1.0;
|
||||||
|
@ -527,7 +565,7 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak(zval *arg, double *dest)
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_slow(zval *arg, double *dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_slow(zval *arg, double *dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG)) {
|
||||||
/* SSTH Exception: IS_LONG may be accepted instead as IS_DOUBLE */
|
/* SSTH Exception: IS_LONG may be accepted instead as IS_DOUBLE */
|
||||||
|
@ -535,11 +573,11 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_slow(zval *arg, double *dest)
|
||||||
} else if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
} else if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return zend_parse_arg_double_weak(arg, dest);
|
return zend_parse_arg_double_weak(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow(zval *arg, zval **dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow(zval *arg, zval **dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -558,6 +596,9 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow(zval *arg, zval **dest) /
|
||||||
}
|
}
|
||||||
zend_string_release(str);
|
zend_string_release(str);
|
||||||
} else if (Z_TYPE_P(arg) < IS_TRUE) {
|
} else if (Z_TYPE_P(arg) < IS_TRUE) {
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("int|float", arg_num)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
ZVAL_LONG(arg, 0);
|
ZVAL_LONG(arg, 0);
|
||||||
} else if (Z_TYPE_P(arg) == IS_TRUE) {
|
} else if (Z_TYPE_P(arg) == IS_TRUE) {
|
||||||
ZVAL_LONG(arg, 1);
|
ZVAL_LONG(arg, 1);
|
||||||
|
@ -569,9 +610,12 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow(zval *arg, zval **dest) /
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_weak(zval *arg, zend_string **dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_weak(zval *arg, zend_string **dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) < IS_STRING)) {
|
if (EXPECTED(Z_TYPE_P(arg) < IS_STRING)) {
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(arg) == IS_NULL) && !zend_null_arg_deprecated("string", arg_num)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
convert_to_string(arg);
|
convert_to_string(arg);
|
||||||
*dest = Z_STR_P(arg);
|
*dest = Z_STR_P(arg);
|
||||||
} else if (UNEXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
|
} else if (UNEXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
|
||||||
|
@ -591,24 +635,24 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_weak(zval *arg, zend_string **des
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_slow(zval *arg, zend_string **dest) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_slow(zval *arg, zend_string **dest, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return zend_parse_arg_str_weak(arg, dest);
|
return zend_parse_arg_str_weak(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_or_long_slow(zval *arg, zend_string **dest_str, zend_long *dest_long) /* {{{ */
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_or_long_slow(zval *arg, zend_string **dest_str, zend_long *dest_long, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
if (UNEXPECTED(ZEND_ARG_USES_STRICT_TYPES())) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (zend_parse_arg_long_weak(arg, dest_long)) {
|
if (zend_parse_arg_long_weak(arg, dest_long, arg_num)) {
|
||||||
*dest_str = NULL;
|
*dest_str = NULL;
|
||||||
return 1;
|
return 1;
|
||||||
} else if (zend_parse_arg_str_weak(arg, dest_str)) {
|
} else if (zend_parse_arg_str_weak(arg, dest_str, arg_num)) {
|
||||||
*dest_long = 0;
|
*dest_long = 0;
|
||||||
return 1;
|
return 1;
|
||||||
} else {
|
} else {
|
||||||
|
@ -617,7 +661,7 @@ ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_or_long_slow(zval *arg, zend_stri
|
||||||
}
|
}
|
||||||
/* }}} */
|
/* }}} */
|
||||||
|
|
||||||
static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec, char **error) /* {{{ */
|
static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec, char **error, uint32_t arg_num) /* {{{ */
|
||||||
{
|
{
|
||||||
const char *spec_walk = *spec;
|
const char *spec_walk = *spec;
|
||||||
char c = *spec_walk++;
|
char c = *spec_walk++;
|
||||||
|
@ -650,7 +694,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
is_null = va_arg(*va, bool *);
|
is_null = va_arg(*va, bool *);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!zend_parse_arg_long(arg, p, is_null, check_null)) {
|
if (!zend_parse_arg_long(arg, p, is_null, check_null, arg_num)) {
|
||||||
return check_null ? "?int" : "int";
|
return check_null ? "?int" : "int";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -665,7 +709,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
is_null = va_arg(*va, bool *);
|
is_null = va_arg(*va, bool *);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!zend_parse_arg_double(arg, p, is_null, check_null)) {
|
if (!zend_parse_arg_double(arg, p, is_null, check_null, arg_num)) {
|
||||||
return check_null ? "?float" : "float";
|
return check_null ? "?float" : "float";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -675,7 +719,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
{
|
{
|
||||||
zval **p = va_arg(*va, zval **);
|
zval **p = va_arg(*va, zval **);
|
||||||
|
|
||||||
if (!zend_parse_arg_number(arg, p, check_null)) {
|
if (!zend_parse_arg_number(arg, p, check_null, arg_num)) {
|
||||||
return check_null ? "int|float|null" : "int|float";
|
return check_null ? "int|float|null" : "int|float";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -685,7 +729,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
{
|
{
|
||||||
char **p = va_arg(*va, char **);
|
char **p = va_arg(*va, char **);
|
||||||
size_t *pl = va_arg(*va, size_t *);
|
size_t *pl = va_arg(*va, size_t *);
|
||||||
if (!zend_parse_arg_string(arg, p, pl, check_null)) {
|
if (!zend_parse_arg_string(arg, p, pl, check_null, arg_num)) {
|
||||||
return check_null ? "?string" : "string";
|
return check_null ? "?string" : "string";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -695,7 +739,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
{
|
{
|
||||||
char **p = va_arg(*va, char **);
|
char **p = va_arg(*va, char **);
|
||||||
size_t *pl = va_arg(*va, size_t *);
|
size_t *pl = va_arg(*va, size_t *);
|
||||||
if (!zend_parse_arg_path(arg, p, pl, check_null)) {
|
if (!zend_parse_arg_path(arg, p, pl, check_null, arg_num)) {
|
||||||
if (Z_TYPE_P(arg) == IS_STRING) {
|
if (Z_TYPE_P(arg) == IS_STRING) {
|
||||||
zend_spprintf(error, 0, "must not contain any null bytes");
|
zend_spprintf(error, 0, "must not contain any null bytes");
|
||||||
return "";
|
return "";
|
||||||
|
@ -709,7 +753,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
case 'P':
|
case 'P':
|
||||||
{
|
{
|
||||||
zend_string **str = va_arg(*va, zend_string **);
|
zend_string **str = va_arg(*va, zend_string **);
|
||||||
if (!zend_parse_arg_path_str(arg, str, check_null)) {
|
if (!zend_parse_arg_path_str(arg, str, check_null, arg_num)) {
|
||||||
if (Z_TYPE_P(arg) == IS_STRING) {
|
if (Z_TYPE_P(arg) == IS_STRING) {
|
||||||
zend_spprintf(error, 0, "must not contain any null bytes");
|
zend_spprintf(error, 0, "must not contain any null bytes");
|
||||||
return "";
|
return "";
|
||||||
|
@ -723,7 +767,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
case 'S':
|
case 'S':
|
||||||
{
|
{
|
||||||
zend_string **str = va_arg(*va, zend_string **);
|
zend_string **str = va_arg(*va, zend_string **);
|
||||||
if (!zend_parse_arg_str(arg, str, check_null)) {
|
if (!zend_parse_arg_str(arg, str, check_null, arg_num)) {
|
||||||
return check_null ? "?string" : "string";
|
return check_null ? "?string" : "string";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -738,7 +782,7 @@ static const char *zend_parse_arg_impl(zval *arg, va_list *va, const char **spec
|
||||||
is_null = va_arg(*va, bool *);
|
is_null = va_arg(*va, bool *);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!zend_parse_arg_bool(arg, p, is_null, check_null)) {
|
if (!zend_parse_arg_bool(arg, p, is_null, check_null, arg_num)) {
|
||||||
return check_null ? "?bool" : "bool";
|
return check_null ? "?bool" : "bool";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -899,7 +943,7 @@ static zend_result zend_parse_arg(uint32_t arg_num, zval *arg, va_list *va, cons
|
||||||
const char *expected_type = NULL;
|
const char *expected_type = NULL;
|
||||||
char *error = NULL;
|
char *error = NULL;
|
||||||
|
|
||||||
expected_type = zend_parse_arg_impl(arg, va, spec, &error);
|
expected_type = zend_parse_arg_impl(arg, va, spec, &error, arg_num);
|
||||||
if (expected_type) {
|
if (expected_type) {
|
||||||
if (EG(exception)) {
|
if (EG(exception)) {
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
|
|
100
Zend/zend_API.h
100
Zend/zend_API.h
|
@ -1450,7 +1450,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "b" */
|
/* old "b" */
|
||||||
#define Z_PARAM_BOOL_EX(dest, is_null, check_null, deref) \
|
#define Z_PARAM_BOOL_EX(dest, is_null, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_bool(_arg, &dest, &is_null, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
|
_expected_type = check_null ? Z_EXPECTED_BOOL_OR_NULL : Z_EXPECTED_BOOL; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1492,7 +1492,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
|
|
||||||
#define Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, allow_null) \
|
#define Z_PARAM_OBJ_OR_STR_EX(destination_object, destination_string, allow_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, NULL, &destination_string, allow_null, _i))) { \
|
||||||
_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
|
_expected_type = allow_null ? Z_EXPECTED_OBJECT_OR_STRING_OR_NULL : Z_EXPECTED_OBJECT_OR_STRING; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1506,7 +1506,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
|
|
||||||
#define Z_PARAM_OBJ_OF_CLASS_OR_STR_EX(destination_object, base_ce, destination_string, allow_null) \
|
#define Z_PARAM_OBJ_OF_CLASS_OR_STR_EX(destination_object, base_ce, destination_string, allow_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, base_ce, &destination_string, allow_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_obj_or_str(_arg, &destination_object, base_ce, &destination_string, allow_null, _i))) { \
|
||||||
if (base_ce) { \
|
if (base_ce) { \
|
||||||
_error = ZSTR_VAL((base_ce)->name); \
|
_error = ZSTR_VAL((base_ce)->name); \
|
||||||
_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
|
_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_STRING_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_STRING; \
|
||||||
|
@ -1527,7 +1527,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "d" */
|
/* old "d" */
|
||||||
#define Z_PARAM_DOUBLE_EX(dest, is_null, check_null, deref) \
|
#define Z_PARAM_DOUBLE_EX(dest, is_null, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_double(_arg, &dest, &is_null, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
|
_expected_type = check_null ? Z_EXPECTED_DOUBLE_OR_NULL : Z_EXPECTED_DOUBLE; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1578,7 +1578,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
|
|
||||||
#define Z_PARAM_ARRAY_HT_OR_LONG_EX(dest_ht, dest_long, is_null, allow_null) \
|
#define Z_PARAM_ARRAY_HT_OR_LONG_EX(dest_ht, dest_long, is_null, allow_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_array_ht_or_long(_arg, &dest_ht, &dest_long, &is_null, allow_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_array_ht_or_long(_arg, &dest_ht, &dest_long, &is_null, allow_null, _i))) { \
|
||||||
_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_LONG_OR_NULL : Z_EXPECTED_ARRAY_OR_LONG; \
|
_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_LONG_OR_NULL : Z_EXPECTED_ARRAY_OR_LONG; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1608,7 +1608,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "l" */
|
/* old "l" */
|
||||||
#define Z_PARAM_LONG_EX(dest, is_null, check_null, deref) \
|
#define Z_PARAM_LONG_EX(dest, is_null, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_long(_arg, &dest, &is_null, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
|
_expected_type = check_null ? Z_EXPECTED_LONG_OR_NULL : Z_EXPECTED_LONG; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1623,7 +1623,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "n" */
|
/* old "n" */
|
||||||
#define Z_PARAM_NUMBER_EX(dest, check_null) \
|
#define Z_PARAM_NUMBER_EX(dest, check_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_number(_arg, &dest, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_number(_arg, &dest, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_NUMBER_OR_NULL : Z_EXPECTED_NUMBER; \
|
_expected_type = check_null ? Z_EXPECTED_NUMBER_OR_NULL : Z_EXPECTED_NUMBER; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1709,7 +1709,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
|
|
||||||
#define Z_PARAM_OBJ_OF_CLASS_OR_LONG_EX(dest_obj, _ce, dest_long, is_null, allow_null) \
|
#define Z_PARAM_OBJ_OF_CLASS_OR_LONG_EX(dest_obj, _ce, dest_long, is_null, allow_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_obj_or_long(_arg, &dest_obj, _ce, &dest_long, &is_null, allow_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_obj_or_long(_arg, &dest_obj, _ce, &dest_long, &is_null, allow_null, _i))) { \
|
||||||
_error = ZSTR_VAL((_ce)->name); \
|
_error = ZSTR_VAL((_ce)->name); \
|
||||||
_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_LONG_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_LONG; \
|
_error_code = allow_null ? ZPP_ERROR_WRONG_CLASS_OR_LONG_OR_NULL : ZPP_ERROR_WRONG_CLASS_OR_LONG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1724,7 +1724,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "p" */
|
/* old "p" */
|
||||||
#define Z_PARAM_PATH_EX(dest, dest_len, check_null, deref) \
|
#define Z_PARAM_PATH_EX(dest, dest_len, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_path(_arg, &dest, &dest_len, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
|
_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1739,7 +1739,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "P" */
|
/* old "P" */
|
||||||
#define Z_PARAM_PATH_STR_EX(dest, check_null, deref) \
|
#define Z_PARAM_PATH_STR_EX(dest, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_path_str(_arg, &dest, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
|
_expected_type = check_null ? Z_EXPECTED_PATH_OR_NULL : Z_EXPECTED_PATH; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1769,7 +1769,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "s" */
|
/* old "s" */
|
||||||
#define Z_PARAM_STRING_EX(dest, dest_len, check_null, deref) \
|
#define Z_PARAM_STRING_EX(dest, dest_len, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_string(_arg, &dest, &dest_len, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
|
_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1784,7 +1784,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* old "S" */
|
/* old "S" */
|
||||||
#define Z_PARAM_STR_EX(dest, check_null, deref) \
|
#define Z_PARAM_STR_EX(dest, check_null, deref) \
|
||||||
Z_PARAM_PROLOGUE(deref, 0); \
|
Z_PARAM_PROLOGUE(deref, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_str(_arg, &dest, check_null, _i))) { \
|
||||||
_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
|
_expected_type = check_null ? Z_EXPECTED_STRING_OR_NULL : Z_EXPECTED_STRING; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1849,7 +1849,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
|
|
||||||
#define Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, allow_null) \
|
#define Z_PARAM_ARRAY_HT_OR_STR_EX(dest_ht, dest_str, allow_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_array_ht_or_str(_arg, &dest_ht, &dest_str, allow_null, _i))) { \
|
||||||
_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
|
_expected_type = allow_null ? Z_EXPECTED_ARRAY_OR_STRING_OR_NULL : Z_EXPECTED_ARRAY_OR_STRING; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1863,7 +1863,7 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
|
|
||||||
#define Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, is_null, allow_null) \
|
#define Z_PARAM_STR_OR_LONG_EX(dest_str, dest_long, is_null, allow_null) \
|
||||||
Z_PARAM_PROLOGUE(0, 0); \
|
Z_PARAM_PROLOGUE(0, 0); \
|
||||||
if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null))) { \
|
if (UNEXPECTED(!zend_parse_arg_str_or_long(_arg, &dest_str, &dest_long, &is_null, allow_null, _i))) { \
|
||||||
_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
|
_expected_type = allow_null ? Z_EXPECTED_STRING_OR_LONG_OR_NULL : Z_EXPECTED_STRING_OR_LONG; \
|
||||||
_error_code = ZPP_ERROR_WRONG_ARG; \
|
_error_code = ZPP_ERROR_WRONG_ARG; \
|
||||||
break; \
|
break; \
|
||||||
|
@ -1880,18 +1880,18 @@ ZEND_API ZEND_COLD void zend_argument_value_error(uint32_t arg_num, const char *
|
||||||
/* Inlined implementations shared by new and old parameter parsing APIs */
|
/* Inlined implementations shared by new and old parameter parsing APIs */
|
||||||
|
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_class(zval *arg, zend_class_entry **pce, uint32_t num, bool check_null);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_class(zval *arg, zend_class_entry **pce, uint32_t num, bool check_null);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_slow(zval *arg, bool *dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_slow(zval *arg, bool *dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_weak(zval *arg, bool *dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_bool_weak(zval *arg, bool *dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_slow(zval *arg, zend_long *dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_slow(zval *arg, zend_long *dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak(zval *arg, zend_long *dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_long_weak(zval *arg, zend_long *dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_slow(zval *arg, double *dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_slow(zval *arg, double *dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak(zval *arg, double *dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_double_weak(zval *arg, double *dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_slow(zval *arg, zend_string **dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_slow(zval *arg, zend_string **dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_weak(zval *arg, zend_string **dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_weak(zval *arg, zend_string **dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow(zval *arg, zval **dest);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_number_slow(zval *arg, zval **dest, uint32_t arg_num);
|
||||||
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_or_long_slow(zval *arg, zend_string **dest_str, zend_long *dest_long);
|
ZEND_API bool ZEND_FASTCALL zend_parse_arg_str_or_long_slow(zval *arg, zend_string **dest_str, zend_long *dest_long, uint32_t arg_num);
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_bool(zval *arg, bool *dest, bool *is_null, bool check_null)
|
static zend_always_inline bool zend_parse_arg_bool(zval *arg, bool *dest, bool *is_null, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (check_null) {
|
if (check_null) {
|
||||||
*is_null = 0;
|
*is_null = 0;
|
||||||
|
@ -1904,12 +1904,12 @@ static zend_always_inline bool zend_parse_arg_bool(zval *arg, bool *dest, bool *
|
||||||
*is_null = 1;
|
*is_null = 1;
|
||||||
*dest = 0;
|
*dest = 0;
|
||||||
} else {
|
} else {
|
||||||
return zend_parse_arg_bool_slow(arg, dest);
|
return zend_parse_arg_bool_slow(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_long(zval *arg, zend_long *dest, bool *is_null, bool check_null)
|
static zend_always_inline bool zend_parse_arg_long(zval *arg, zend_long *dest, bool *is_null, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (check_null) {
|
if (check_null) {
|
||||||
*is_null = 0;
|
*is_null = 0;
|
||||||
|
@ -1920,12 +1920,12 @@ static zend_always_inline bool zend_parse_arg_long(zval *arg, zend_long *dest, b
|
||||||
*is_null = 1;
|
*is_null = 1;
|
||||||
*dest = 0;
|
*dest = 0;
|
||||||
} else {
|
} else {
|
||||||
return zend_parse_arg_long_slow(arg, dest);
|
return zend_parse_arg_long_slow(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_double(zval *arg, double *dest, bool *is_null, bool check_null)
|
static zend_always_inline bool zend_parse_arg_double(zval *arg, double *dest, bool *is_null, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (check_null) {
|
if (check_null) {
|
||||||
*is_null = 0;
|
*is_null = 0;
|
||||||
|
@ -1936,40 +1936,40 @@ static zend_always_inline bool zend_parse_arg_double(zval *arg, double *dest, bo
|
||||||
*is_null = 1;
|
*is_null = 1;
|
||||||
*dest = 0.0;
|
*dest = 0.0;
|
||||||
} else {
|
} else {
|
||||||
return zend_parse_arg_double_slow(arg, dest);
|
return zend_parse_arg_double_slow(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_number(zval *arg, zval **dest, bool check_null)
|
static zend_always_inline bool zend_parse_arg_number(zval *arg, zval **dest, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG || Z_TYPE_P(arg) == IS_DOUBLE)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_LONG || Z_TYPE_P(arg) == IS_DOUBLE)) {
|
||||||
*dest = arg;
|
*dest = arg;
|
||||||
} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
|
} else if (check_null && EXPECTED(Z_TYPE_P(arg) == IS_NULL)) {
|
||||||
*dest = NULL;
|
*dest = NULL;
|
||||||
} else {
|
} else {
|
||||||
return zend_parse_arg_number_slow(arg, dest);
|
return zend_parse_arg_number_slow(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_str(zval *arg, zend_string **dest, bool check_null)
|
static zend_always_inline bool zend_parse_arg_str(zval *arg, zend_string **dest, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
|
||||||
*dest = Z_STR_P(arg);
|
*dest = Z_STR_P(arg);
|
||||||
} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
|
} else if (check_null && Z_TYPE_P(arg) == IS_NULL) {
|
||||||
*dest = NULL;
|
*dest = NULL;
|
||||||
} else {
|
} else {
|
||||||
return zend_parse_arg_str_slow(arg, dest);
|
return zend_parse_arg_str_slow(arg, dest, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_string(zval *arg, char **dest, size_t *dest_len, bool check_null)
|
static zend_always_inline bool zend_parse_arg_string(zval *arg, char **dest, size_t *dest_len, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
zend_string *str;
|
zend_string *str;
|
||||||
|
|
||||||
if (!zend_parse_arg_str(arg, &str, check_null)) {
|
if (!zend_parse_arg_str(arg, &str, check_null, arg_num)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (check_null && UNEXPECTED(!str)) {
|
if (check_null && UNEXPECTED(!str)) {
|
||||||
|
@ -1982,20 +1982,20 @@ static zend_always_inline bool zend_parse_arg_string(zval *arg, char **dest, siz
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_path_str(zval *arg, zend_string **dest, bool check_null)
|
static zend_always_inline bool zend_parse_arg_path_str(zval *arg, zend_string **dest, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (!zend_parse_arg_str(arg, dest, check_null) ||
|
if (!zend_parse_arg_str(arg, dest, check_null, arg_num) ||
|
||||||
(*dest && UNEXPECTED(CHECK_NULL_PATH(ZSTR_VAL(*dest), ZSTR_LEN(*dest))))) {
|
(*dest && UNEXPECTED(CHECK_NULL_PATH(ZSTR_VAL(*dest), ZSTR_LEN(*dest))))) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_path(zval *arg, char **dest, size_t *dest_len, bool check_null)
|
static zend_always_inline bool zend_parse_arg_path(zval *arg, char **dest, size_t *dest_len, bool check_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
zend_string *str;
|
zend_string *str;
|
||||||
|
|
||||||
if (!zend_parse_arg_path_str(arg, &str, check_null)) {
|
if (!zend_parse_arg_path_str(arg, &str, check_null, arg_num)) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
if (check_null && UNEXPECTED(!str)) {
|
if (check_null && UNEXPECTED(!str)) {
|
||||||
|
@ -2060,7 +2060,7 @@ static zend_always_inline bool zend_parse_arg_array_ht(zval *arg, HashTable **de
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_array_ht_or_long(
|
static zend_always_inline bool zend_parse_arg_array_ht_or_long(
|
||||||
zval *arg, HashTable **dest_ht, zend_long *dest_long, bool *is_null, bool allow_null
|
zval *arg, HashTable **dest_ht, zend_long *dest_long, bool *is_null, bool allow_null, uint32_t arg_num
|
||||||
) {
|
) {
|
||||||
if (allow_null) {
|
if (allow_null) {
|
||||||
*is_null = 0;
|
*is_null = 0;
|
||||||
|
@ -2076,7 +2076,7 @@ static zend_always_inline bool zend_parse_arg_array_ht_or_long(
|
||||||
*is_null = 1;
|
*is_null = 1;
|
||||||
} else {
|
} else {
|
||||||
*dest_ht = NULL;
|
*dest_ht = NULL;
|
||||||
return zend_parse_arg_long_slow(arg, dest_long);
|
return zend_parse_arg_long_slow(arg, dest_long, arg_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2109,7 +2109,7 @@ static zend_always_inline bool zend_parse_arg_obj(zval *arg, zend_object **dest,
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_obj_or_long(
|
static zend_always_inline bool zend_parse_arg_obj_or_long(
|
||||||
zval *arg, zend_object **dest_obj, zend_class_entry *ce, zend_long *dest_long, bool *is_null, bool allow_null
|
zval *arg, zend_object **dest_obj, zend_class_entry *ce, zend_long *dest_long, bool *is_null, bool allow_null, uint32_t arg_num
|
||||||
) {
|
) {
|
||||||
if (allow_null) {
|
if (allow_null) {
|
||||||
*is_null = 0;
|
*is_null = 0;
|
||||||
|
@ -2125,7 +2125,7 @@ static zend_always_inline bool zend_parse_arg_obj_or_long(
|
||||||
*is_null = 1;
|
*is_null = 1;
|
||||||
} else {
|
} else {
|
||||||
*dest_obj = NULL;
|
*dest_obj = NULL;
|
||||||
return zend_parse_arg_long_slow(arg, dest_long);
|
return zend_parse_arg_long_slow(arg, dest_long, arg_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -2173,7 +2173,7 @@ static zend_always_inline void zend_parse_arg_zval_deref(zval *arg, zval **dest,
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_array_ht_or_str(
|
static zend_always_inline bool zend_parse_arg_array_ht_or_str(
|
||||||
zval *arg, HashTable **dest_ht, zend_string **dest_str, bool allow_null)
|
zval *arg, HashTable **dest_ht, zend_string **dest_str, bool allow_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_STRING)) {
|
||||||
*dest_ht = NULL;
|
*dest_ht = NULL;
|
||||||
|
@ -2186,13 +2186,13 @@ static zend_always_inline bool zend_parse_arg_array_ht_or_str(
|
||||||
*dest_str = NULL;
|
*dest_str = NULL;
|
||||||
} else {
|
} else {
|
||||||
*dest_ht = NULL;
|
*dest_ht = NULL;
|
||||||
return zend_parse_arg_str_slow(arg, dest_str);
|
return zend_parse_arg_str_slow(arg, dest_str, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_str_or_long(zval *arg, zend_string **dest_str, zend_long *dest_long,
|
static zend_always_inline bool zend_parse_arg_str_or_long(zval *arg, zend_string **dest_str, zend_long *dest_long,
|
||||||
bool *is_null, bool allow_null)
|
bool *is_null, bool allow_null, uint32_t arg_num)
|
||||||
{
|
{
|
||||||
if (allow_null) {
|
if (allow_null) {
|
||||||
*is_null = 0;
|
*is_null = 0;
|
||||||
|
@ -2206,7 +2206,7 @@ static zend_always_inline bool zend_parse_arg_str_or_long(zval *arg, zend_string
|
||||||
*dest_str = NULL;
|
*dest_str = NULL;
|
||||||
*is_null = 1;
|
*is_null = 1;
|
||||||
} else {
|
} else {
|
||||||
return zend_parse_arg_str_or_long_slow(arg, dest_str, dest_long);
|
return zend_parse_arg_str_or_long_slow(arg, dest_str, dest_long, arg_num);
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2230,7 +2230,7 @@ static zend_always_inline bool zend_parse_arg_obj_or_class_name(
|
||||||
}
|
}
|
||||||
|
|
||||||
static zend_always_inline bool zend_parse_arg_obj_or_str(
|
static zend_always_inline bool zend_parse_arg_obj_or_str(
|
||||||
zval *arg, zend_object **destination_object, zend_class_entry *base_ce, zend_string **destination_string, bool allow_null
|
zval *arg, zend_object **destination_object, zend_class_entry *base_ce, zend_string **destination_string, bool allow_null, uint32_t arg_num
|
||||||
) {
|
) {
|
||||||
if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
|
if (EXPECTED(Z_TYPE_P(arg) == IS_OBJECT)) {
|
||||||
if (!base_ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), base_ce))) {
|
if (!base_ce || EXPECTED(instanceof_function(Z_OBJCE_P(arg), base_ce))) {
|
||||||
|
@ -2241,7 +2241,7 @@ static zend_always_inline bool zend_parse_arg_obj_or_str(
|
||||||
}
|
}
|
||||||
|
|
||||||
*destination_object = NULL;
|
*destination_object = NULL;
|
||||||
return zend_parse_arg_str(arg, destination_string, allow_null);
|
return zend_parse_arg_str(arg, destination_string, allow_null, arg_num);
|
||||||
}
|
}
|
||||||
|
|
||||||
END_EXTERN_C()
|
END_EXTERN_C()
|
||||||
|
|
|
@ -739,22 +739,22 @@ static bool zend_verify_weak_scalar_type_hint(uint32_t type_mask, zval *arg)
|
||||||
ZVAL_DOUBLE(arg, dval);
|
ZVAL_DOUBLE(arg, dval);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else if (zend_parse_arg_long_weak(arg, &lval)) {
|
} else if (zend_parse_arg_long_weak(arg, &lval, 0)) {
|
||||||
zval_ptr_dtor(arg);
|
zval_ptr_dtor(arg);
|
||||||
ZVAL_LONG(arg, lval);
|
ZVAL_LONG(arg, lval);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ((type_mask & MAY_BE_DOUBLE) && zend_parse_arg_double_weak(arg, &dval)) {
|
if ((type_mask & MAY_BE_DOUBLE) && zend_parse_arg_double_weak(arg, &dval, 0)) {
|
||||||
zval_ptr_dtor(arg);
|
zval_ptr_dtor(arg);
|
||||||
ZVAL_DOUBLE(arg, dval);
|
ZVAL_DOUBLE(arg, dval);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((type_mask & MAY_BE_STRING) && zend_parse_arg_str_weak(arg, &str)) {
|
if ((type_mask & MAY_BE_STRING) && zend_parse_arg_str_weak(arg, &str, 0)) {
|
||||||
/* on success "arg" is converted to IS_STRING */
|
/* on success "arg" is converted to IS_STRING */
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL && zend_parse_arg_bool_weak(arg, &bval)) {
|
if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL && zend_parse_arg_bool_weak(arg, &bval, 0)) {
|
||||||
zval_ptr_dtor(arg);
|
zval_ptr_dtor(arg);
|
||||||
ZVAL_BOOL(arg, bval);
|
ZVAL_BOOL(arg, bval);
|
||||||
return 1;
|
return 1;
|
||||||
|
@ -781,16 +781,16 @@ static bool zend_verify_weak_scalar_type_hint_no_sideeffect(uint32_t type_mask,
|
||||||
double dval;
|
double dval;
|
||||||
bool bval;
|
bool bval;
|
||||||
|
|
||||||
if ((type_mask & MAY_BE_LONG) && zend_parse_arg_long_weak(arg, &lval)) {
|
if ((type_mask & MAY_BE_LONG) && zend_parse_arg_long_weak(arg, &lval, 0)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((type_mask & MAY_BE_DOUBLE) && zend_parse_arg_double_weak(arg, &dval)) {
|
if ((type_mask & MAY_BE_DOUBLE) && zend_parse_arg_double_weak(arg, &dval, 0)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((type_mask & MAY_BE_STRING) && can_convert_to_string(arg)) {
|
if ((type_mask & MAY_BE_STRING) && can_convert_to_string(arg)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL && zend_parse_arg_bool_weak(arg, &bval)) {
|
if ((type_mask & MAY_BE_BOOL) == MAY_BE_BOOL && zend_parse_arg_bool_weak(arg, &bval, 0)) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
@ -8310,8 +8310,18 @@ ZEND_VM_COLD_CONST_HANDLER(121, ZEND_STRLEN, CONST|TMPVAR|CV, ANY)
|
||||||
zend_string *str;
|
zend_string *str;
|
||||||
zval tmp;
|
zval tmp;
|
||||||
|
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(value) == IS_NULL)) {
|
||||||
|
zend_error(E_DEPRECATED,
|
||||||
|
"strlen(): Passing null to parameter #1 ($string) of type string is deprecated");
|
||||||
|
if (UNEXPECTED(EG(exception))) {
|
||||||
|
HANDLE_EXCEPTION();
|
||||||
|
}
|
||||||
|
ZVAL_LONG(EX_VAR(opline->result.var), 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
ZVAL_COPY(&tmp, value);
|
ZVAL_COPY(&tmp, value);
|
||||||
if (zend_parse_arg_str_weak(&tmp, &str)) {
|
if (zend_parse_arg_str_weak(&tmp, &str, 1)) {
|
||||||
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
||||||
zval_ptr_dtor(&tmp);
|
zval_ptr_dtor(&tmp);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -5286,8 +5286,18 @@ static ZEND_VM_COLD ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_CONST
|
||||||
zend_string *str;
|
zend_string *str;
|
||||||
zval tmp;
|
zval tmp;
|
||||||
|
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(value) == IS_NULL)) {
|
||||||
|
zend_error(E_DEPRECATED,
|
||||||
|
"strlen(): Passing null to parameter #1 ($string) of type string is deprecated");
|
||||||
|
if (UNEXPECTED(EG(exception))) {
|
||||||
|
HANDLE_EXCEPTION();
|
||||||
|
}
|
||||||
|
ZVAL_LONG(EX_VAR(opline->result.var), 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
ZVAL_COPY(&tmp, value);
|
ZVAL_COPY(&tmp, value);
|
||||||
if (zend_parse_arg_str_weak(&tmp, &str)) {
|
if (zend_parse_arg_str_weak(&tmp, &str, 1)) {
|
||||||
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
||||||
zval_ptr_dtor(&tmp);
|
zval_ptr_dtor(&tmp);
|
||||||
break;
|
break;
|
||||||
|
@ -14459,8 +14469,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_TMPVAR_HANDLER(ZEN
|
||||||
zend_string *str;
|
zend_string *str;
|
||||||
zval tmp;
|
zval tmp;
|
||||||
|
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(value) == IS_NULL)) {
|
||||||
|
zend_error(E_DEPRECATED,
|
||||||
|
"strlen(): Passing null to parameter #1 ($string) of type string is deprecated");
|
||||||
|
if (UNEXPECTED(EG(exception))) {
|
||||||
|
HANDLE_EXCEPTION();
|
||||||
|
}
|
||||||
|
ZVAL_LONG(EX_VAR(opline->result.var), 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
ZVAL_COPY(&tmp, value);
|
ZVAL_COPY(&tmp, value);
|
||||||
if (zend_parse_arg_str_weak(&tmp, &str)) {
|
if (zend_parse_arg_str_weak(&tmp, &str, 1)) {
|
||||||
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
||||||
zval_ptr_dtor(&tmp);
|
zval_ptr_dtor(&tmp);
|
||||||
break;
|
break;
|
||||||
|
@ -38546,8 +38566,18 @@ static ZEND_OPCODE_HANDLER_RET ZEND_FASTCALL ZEND_STRLEN_SPEC_CV_HANDLER(ZEND_OP
|
||||||
zend_string *str;
|
zend_string *str;
|
||||||
zval tmp;
|
zval tmp;
|
||||||
|
|
||||||
|
if (UNEXPECTED(Z_TYPE_P(value) == IS_NULL)) {
|
||||||
|
zend_error(E_DEPRECATED,
|
||||||
|
"strlen(): Passing null to parameter #1 ($string) of type string is deprecated");
|
||||||
|
if (UNEXPECTED(EG(exception))) {
|
||||||
|
HANDLE_EXCEPTION();
|
||||||
|
}
|
||||||
|
ZVAL_LONG(EX_VAR(opline->result.var), 0);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
ZVAL_COPY(&tmp, value);
|
ZVAL_COPY(&tmp, value);
|
||||||
if (zend_parse_arg_str_weak(&tmp, &str)) {
|
if (zend_parse_arg_str_weak(&tmp, &str, 1)) {
|
||||||
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
ZVAL_LONG(EX_VAR(opline->result.var), ZSTR_LEN(str));
|
||||||
zval_ptr_dtor(&tmp);
|
zval_ptr_dtor(&tmp);
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -10,5 +10,6 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
|
Deprecated: DatePeriod::__construct(): Passing null to parameter #1 ($start) of type string is deprecated in %s on line %d
|
||||||
string(51) "DatePeriod::__construct(): Unknown or bad format ()"
|
string(51) "DatePeriod::__construct(): Unknown or bad format ()"
|
||||||
|
|
|
@ -15,8 +15,8 @@ $e = new DateTime($es);
|
||||||
$d= $e->diff($s);
|
$d= $e->diff($s);
|
||||||
var_dump($d->days); // 0 ... but should be 30
|
var_dump($d->days); // 0 ... but should be 30
|
||||||
|
|
||||||
$s = (new DateTime(null))->setTimestamp(strtotime($ss)); // verbose setup method
|
$s = (new DateTime("now"))->setTimestamp(strtotime($ss)); // verbose setup method
|
||||||
$e = (new DateTime(null))->setTimestamp(strtotime($es)); // verbose setup method
|
$e = (new DateTime("now"))->setTimestamp(strtotime($es)); // verbose setup method
|
||||||
$d = $e->diff($s);
|
$d = $e->diff($s);
|
||||||
var_dump($d->days); // 30 ... and should be 30
|
var_dump($d->days); // 30 ... and should be 30
|
||||||
|
|
||||||
|
@ -24,13 +24,13 @@ var_dump($d->days); // 30 ... and should be 30
|
||||||
Next we will try mix/match the code to see what happens, surprisingly it seems that the end date ($e)
|
Next we will try mix/match the code to see what happens, surprisingly it seems that the end date ($e)
|
||||||
is the important one, if it uses the verbose method it returns the correct values.
|
is the important one, if it uses the verbose method it returns the correct values.
|
||||||
*/
|
*/
|
||||||
$s = (new DateTime(null))->setTimestamp(strtotime($ss)); // verbose setup method
|
$s = (new DateTime("now"))->setTimestamp(strtotime($ss)); // verbose setup method
|
||||||
$e = new DateTime($es);
|
$e = new DateTime($es);
|
||||||
$d= $e->diff($s);
|
$d= $e->diff($s);
|
||||||
var_dump($d->days); // 0 ... but should be 30
|
var_dump($d->days); // 0 ... but should be 30
|
||||||
|
|
||||||
$s = new DateTime($ss);
|
$s = new DateTime($ss);
|
||||||
$e = (new DateTime(null))->setTimestamp(strtotime($es)); // verbose setup method
|
$e = (new DateTime("now"))->setTimestamp(strtotime($es)); // verbose setup method
|
||||||
$d= $e->diff($s);
|
$d= $e->diff($s);
|
||||||
var_dump($d->days); // 30 ... and should be 30
|
var_dump($d->days); // 30 ... and should be 30
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@ This test just proves that the $e date is important BUT NOT because it's the one
|
||||||
on, that's just coincidental that seems to imply that the "- 1 second" in the date string is the problem.
|
on, that's just coincidental that seems to imply that the "- 1 second" in the date string is the problem.
|
||||||
*/
|
*/
|
||||||
$s = new DateTime($ss);
|
$s = new DateTime($ss);
|
||||||
$e = (new DateTime(null))->setTimestamp(strtotime($es)); // verbose setup method
|
$e = (new DateTime("now"))->setTimestamp(strtotime($es)); // verbose setup method
|
||||||
$d= $s->diff($e);
|
$d= $s->diff($e);
|
||||||
var_dump($d->days); // 30 ... and should be 30
|
var_dump($d->days); // 30 ... and should be 30
|
||||||
|
|
||||||
|
|
|
@ -8,5 +8,7 @@ $i = date_interval_create_from_date_string(null);
|
||||||
var_dump($i);
|
var_dump($i);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
|
Deprecated: date_interval_create_from_date_string(): Passing null to parameter #1 ($datetime) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
Warning: date_interval_create_from_date_string(): Unknown or bad format () at position 0 ( ): Empty string in %sdate_interval_create_from_date_string_nullparam.php on line 2
|
Warning: date_interval_create_from_date_string(): Unknown or bad format () at position 0 ( ): Empty string in %sdate_interval_create_from_date_string_nullparam.php on line 2
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
|
@ -13,7 +13,8 @@ $dtms021 = date_create();
|
||||||
|
|
||||||
var_dump(date_timestamp_set($dtms021, null));
|
var_dump(date_timestamp_set($dtms021, null));
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
|
Deprecated: date_timestamp_set(): Passing null to parameter #2 ($timestamp) of type int is deprecated in %s on line %d
|
||||||
object(DateTime)#1 (3) {
|
object(DateTime)#1 (3) {
|
||||||
["date"]=>
|
["date"]=>
|
||||||
string(26) "1970-01-01 00:00:00.000000"
|
string(26) "1970-01-01 00:00:00.000000"
|
||||||
|
|
|
@ -1,56 +0,0 @@
|
||||||
--TEST--
|
|
||||||
Test wrong number of arguments for microtime()
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
/*
|
|
||||||
* Function is implemented in ext/standard/microtime.c
|
|
||||||
*/
|
|
||||||
|
|
||||||
echo "\n-- Bad Arg types --\n";
|
|
||||||
|
|
||||||
$bad_args = array(null,
|
|
||||||
1.5,
|
|
||||||
"hello",
|
|
||||||
array('k'=>'v', array(0)),
|
|
||||||
new stdClass,
|
|
||||||
1);
|
|
||||||
foreach ($bad_args as $bad_arg) {
|
|
||||||
echo "\n--> bad arg: ";
|
|
||||||
var_dump($bad_arg);
|
|
||||||
try {
|
|
||||||
var_dump(microtime($bad_arg));
|
|
||||||
} catch (TypeError $e) {
|
|
||||||
echo $e->getMessage(), "\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
?>
|
|
||||||
--EXPECTF--
|
|
||||||
-- Bad Arg types --
|
|
||||||
|
|
||||||
--> bad arg: NULL
|
|
||||||
string(%d) "%s %s"
|
|
||||||
|
|
||||||
--> bad arg: float(1.5)
|
|
||||||
float(%s)
|
|
||||||
|
|
||||||
--> bad arg: string(5) "hello"
|
|
||||||
float(%s)
|
|
||||||
|
|
||||||
--> bad arg: array(2) {
|
|
||||||
["k"]=>
|
|
||||||
string(1) "v"
|
|
||||||
[0]=>
|
|
||||||
array(1) {
|
|
||||||
[0]=>
|
|
||||||
int(0)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
microtime(): Argument #1 ($as_float) must be of type bool, array given
|
|
||||||
|
|
||||||
--> bad arg: object(stdClass)#%d (0) {
|
|
||||||
}
|
|
||||||
microtime(): Argument #1 ($as_float) must be of type bool, stdClass given
|
|
||||||
|
|
||||||
--> bad arg: int(1)
|
|
||||||
float(%s)
|
|
|
@ -31,7 +31,7 @@ check(dba_handlers());
|
||||||
|
|
||||||
echo "Test 2\n";
|
echo "Test 2\n";
|
||||||
|
|
||||||
check(dba_handlers(null));
|
check(dba_handlers(false));
|
||||||
|
|
||||||
echo "Test 3\n";
|
echo "Test 3\n";
|
||||||
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ require_once __DIR__ .'/skipif.inc';
|
||||||
?>
|
?>
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
$filename = null;
|
$filename = '';
|
||||||
$doc = new DOMDocument('1.0');
|
$doc = new DOMDocument('1.0');
|
||||||
$root = $doc->createElement('html');
|
$root = $doc->createElement('html');
|
||||||
$root = $doc->appendChild($root);
|
$root = $doc->appendChild($root);
|
||||||
|
|
|
@ -16,11 +16,6 @@ try {
|
||||||
} catch (\ValueError $e) {
|
} catch (\ValueError $e) {
|
||||||
echo $e->getMessage() . \PHP_EOL;
|
echo $e->getMessage() . \PHP_EOL;
|
||||||
}
|
}
|
||||||
try {
|
|
||||||
var_dump(finfo_file($fp, NULL));
|
|
||||||
} catch (\ValueError $e) {
|
|
||||||
echo $e->getMessage() . \PHP_EOL;
|
|
||||||
}
|
|
||||||
var_dump(finfo_file($fp, '.'));
|
var_dump(finfo_file($fp, '.'));
|
||||||
var_dump(finfo_file($fp, '&'));
|
var_dump(finfo_file($fp, '&'));
|
||||||
|
|
||||||
|
@ -28,7 +23,6 @@ var_dump(finfo_file($fp, '&'));
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
finfo_file(): Argument #1 ($finfo) must not contain any null bytes
|
finfo_file(): Argument #1 ($finfo) must not contain any null bytes
|
||||||
finfo_file(): Argument #1 ($finfo) cannot be empty
|
finfo_file(): Argument #1 ($finfo) cannot be empty
|
||||||
finfo_file(): Argument #1 ($finfo) cannot be empty
|
|
||||||
string(9) "directory"
|
string(9) "directory"
|
||||||
|
|
||||||
Warning: finfo_file(&): Failed to open stream: No such file or directory in %s on line %d
|
Warning: finfo_file(&): Failed to open stream: No such file or directory in %s on line %d
|
||||||
|
|
|
@ -5,18 +5,18 @@ filter_var() and FILTER_VALIDATE_MAC
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
$values = Array(
|
$values = Array(
|
||||||
array("01-23-45-67-89-ab", null),
|
array("01-23-45-67-89-ab", 0),
|
||||||
array("01-23-45-67-89-ab", array("options" => array("separator" => "-"))),
|
array("01-23-45-67-89-ab", array("options" => array("separator" => "-"))),
|
||||||
array("01-23-45-67-89-ab", array("options" => array("separator" => "."))),
|
array("01-23-45-67-89-ab", array("options" => array("separator" => "."))),
|
||||||
array("01-23-45-67-89-ab", array("options" => array("separator" => ":"))),
|
array("01-23-45-67-89-ab", array("options" => array("separator" => ":"))),
|
||||||
array("01-23-45-67-89-AB", null),
|
array("01-23-45-67-89-AB", 0),
|
||||||
array("01-23-45-67-89-aB", null),
|
array("01-23-45-67-89-aB", 0),
|
||||||
array("01:23:45:67:89:ab", null),
|
array("01:23:45:67:89:ab", 0),
|
||||||
array("01:23:45:67:89:AB", null),
|
array("01:23:45:67:89:AB", 0),
|
||||||
array("01:23:45:67:89:aB", null),
|
array("01:23:45:67:89:aB", 0),
|
||||||
array("01:23:45-67:89:aB", null),
|
array("01:23:45-67:89:aB", 0),
|
||||||
array("xx:23:45:67:89:aB", null),
|
array("xx:23:45:67:89:aB", 0),
|
||||||
array("0123.4567.89ab", null),
|
array("0123.4567.89ab", 0),
|
||||||
array("01-23-45-67-89-ab", array("options" => array("separator" => "--"))),
|
array("01-23-45-67-89-ab", array("options" => array("separator" => "--"))),
|
||||||
array("01-23-45-67-89-ab", array("options" => array("separator" => ""))),
|
array("01-23-45-67-89-ab", array("options" => array("separator" => ""))),
|
||||||
);
|
);
|
||||||
|
|
|
@ -19,9 +19,13 @@ foreach (array(null, true, false, 1, "", new stdClass) as $invalid) {
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
|
Deprecated: filter_input_array(): Passing null to parameter #2 ($options) of type array|int is deprecated in %s on line %d
|
||||||
|
|
||||||
Warning: filter_input_array(): Unknown filter with ID 0 in %s on line %d
|
Warning: filter_input_array(): Unknown filter with ID 0 in %s on line %d
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
||||||
|
Deprecated: filter_var_array(): Passing null to parameter #2 ($options) of type array|int is deprecated in %s on line %d
|
||||||
|
|
||||||
Warning: filter_var_array(): Unknown filter with ID 0 in %s on line %d
|
Warning: filter_var_array(): Unknown filter with ID 0 in %s on line %d
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
||||||
|
|
|
@ -14,7 +14,7 @@ require __DIR__ . '/func.inc';
|
||||||
$image = imagecreatetruecolor(50, 50);
|
$image = imagecreatetruecolor(50, 50);
|
||||||
|
|
||||||
trycatch_dump(
|
trycatch_dump(
|
||||||
fn() => imagetruecolortopalette($image, true, null)
|
fn() => imagetruecolortopalette($image, true, 0)
|
||||||
);
|
);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -628,7 +628,7 @@ static zend_result convert_to_gmp(mpz_t gmpnumber, zval *val, zend_long base, ui
|
||||||
}
|
}
|
||||||
default: {
|
default: {
|
||||||
zend_long lval;
|
zend_long lval;
|
||||||
if (!zend_parse_arg_long_slow(val, &lval)) {
|
if (!zend_parse_arg_long_slow(val, &lval, arg_pos)) {
|
||||||
zend_argument_type_error(arg_pos, "must be of type GMP|string|int, %s given", zend_zval_type_name(val));
|
zend_argument_type_error(arg_pos, "must be of type GMP|string|int, %s given", zend_zval_type_name(val));
|
||||||
return FAILURE;
|
return FAILURE;
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,7 +37,7 @@ catch (\Error $e) {
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
*** Testing hash_init(): error conditions ***
|
*** Testing hash_init(): error conditions ***
|
||||||
|
|
||||||
-- Testing hash_init() function with unknown algorithms --
|
-- Testing hash_init() function with unknown algorithms --
|
||||||
|
@ -48,4 +48,6 @@ hash_init(): Argument #1 ($algo) must be a cryptographic hashing algorithm if HM
|
||||||
|
|
||||||
-- Testing hash_init() function with HASH_HMAC and no key --
|
-- Testing hash_init() function with HASH_HMAC and no key --
|
||||||
hash_init(): Argument #3 ($key) cannot be empty when HMAC is requested
|
hash_init(): Argument #3 ($key) cannot be empty when HMAC is requested
|
||||||
|
|
||||||
|
Deprecated: hash_init(): Passing null to parameter #3 ($key) of type string is deprecated in %s on line %d
|
||||||
hash_init(): Argument #3 ($key) cannot be empty when HMAC is requested
|
hash_init(): Argument #3 ($key) cannot be empty when HMAC is requested
|
||||||
|
|
|
@ -5,7 +5,7 @@ iconv_mime_decode() charset parameter length checks (CVE-2007-4840)
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
$a = str_repeat("/", 9000000);
|
$a = str_repeat("/", 9000000);
|
||||||
var_dump(iconv_mime_decode("a", null, $a));
|
var_dump(iconv_mime_decode("a", 0, $a));
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: iconv_mime_decode(): Encoding parameter exceeds the maximum allowed length of 64 characters in %s on line %d
|
Warning: iconv_mime_decode(): Encoding parameter exceeds the maximum allowed length of 64 characters in %s on line %d
|
||||||
|
|
|
@ -5,7 +5,7 @@ iconv_mime_decode_headers() charset parameter length checks (CVE-2007-4840)
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
$a = str_repeat("/", 9000000);
|
$a = str_repeat("/", 9000000);
|
||||||
var_dump(iconv_mime_decode_headers("a", null, $a));
|
var_dump(iconv_mime_decode_headers("a", 0, $a));
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: iconv_mime_decode_headers(): Encoding parameter exceeds the maximum allowed length of 64 characters in %s on line %d
|
Warning: iconv_mime_decode_headers(): Encoding parameter exceeds the maximum allowed length of 64 characters in %s on line %d
|
||||||
|
|
|
@ -9,7 +9,7 @@ extension_loaded('imap') or die('skip imap extension not available in this build
|
||||||
|
|
||||||
$address = 'John Doe <john@example.com>';
|
$address = 'John Doe <john@example.com>';
|
||||||
var_dump($address);
|
var_dump($address);
|
||||||
imap_rfc822_parse_adrlist($address, null);
|
imap_rfc822_parse_adrlist($address, '');
|
||||||
var_dump($address);
|
var_dump($address);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -15,8 +15,10 @@ foreach (['', 1, NULL, $x] as $value) {
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
NumberFormatter::format(): Argument #1 ($num) must be of type int|float, string given
|
NumberFormatter::format(): Argument #1 ($num) must be of type int|float, string given
|
||||||
string(1) "1"
|
string(1) "1"
|
||||||
|
|
||||||
|
Deprecated: NumberFormatter::format(): Passing null to parameter #1 ($num) of type int|float is deprecated in %s on line %d
|
||||||
string(1) "0"
|
string(1) "0"
|
||||||
NumberFormatter::format(): Argument #1 ($num) must be of type int|float, NumberFormatter given
|
NumberFormatter::format(): Argument #1 ($num) must be of type int|float, NumberFormatter given
|
||||||
|
|
|
@ -6,8 +6,7 @@ Bug #72241: get_icu_value_internal out-of-bounds read
|
||||||
<?php
|
<?php
|
||||||
$var1=str_repeat("A", 1000);
|
$var1=str_repeat("A", 1000);
|
||||||
$out = locale_get_primary_language($var1);
|
$out = locale_get_primary_language($var1);
|
||||||
echo strlen($out) . PHP_EOL;
|
var_dump($out);
|
||||||
echo unpack('H*', $out)[1] . PHP_EOL;
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
0
|
NULL
|
||||||
|
|
|
@ -71,12 +71,11 @@ function ut_main()
|
||||||
array( 'ab' , 'b' ),
|
array( 'ab' , 'b' ),
|
||||||
array( 'ab' , 'a' ),
|
array( 'ab' , 'a' ),
|
||||||
array( 123 , 'abc' ),
|
array( 123 , 'abc' ),
|
||||||
array( 'ac' , null ),
|
array( 'ac' , '' ),
|
||||||
array( '.' , '.' ),
|
array( '.' , '.' ),
|
||||||
// Try to compare long strings.
|
// Try to compare long strings.
|
||||||
array( 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcde',
|
array( 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcde',
|
||||||
'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdea'),
|
'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdea'),
|
||||||
array( null , null )
|
|
||||||
);
|
);
|
||||||
|
|
||||||
$res_str .= compare_pairs( 'en_US', $test_params );
|
$res_str .= compare_pairs( 'en_US', $test_params );
|
||||||
|
@ -91,7 +90,7 @@ function ut_main()
|
||||||
array( 'а', 'b' ),
|
array( 'а', 'b' ),
|
||||||
array( 'а', 'bb' ),
|
array( 'а', 'bb' ),
|
||||||
array( 'а', 'ab' ),
|
array( 'а', 'ab' ),
|
||||||
array( 'а', null )
|
array( 'а', '' )
|
||||||
);
|
);
|
||||||
|
|
||||||
$res_str .= compare_pairs( 'ru_RU', $test_params );
|
$res_str .= compare_pairs( 'ru_RU', $test_params );
|
||||||
|
@ -120,10 +119,9 @@ ut_run();
|
||||||
'ab' < 'b'
|
'ab' < 'b'
|
||||||
'ab' > 'a'
|
'ab' > 'a'
|
||||||
123 < 'abc'
|
123 < 'abc'
|
||||||
'ac' > NULL
|
'ac' > ''
|
||||||
'.' = '.'
|
'.' = '.'
|
||||||
'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcde' < 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdea'
|
'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcde' < 'abcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdefabcdea'
|
||||||
NULL = NULL
|
|
||||||
'а' < 'б'
|
'а' < 'б'
|
||||||
'а' < 'аа'
|
'а' < 'аа'
|
||||||
'аб' < 'ба'
|
'аб' < 'ба'
|
||||||
|
@ -131,5 +129,5 @@ NULL = NULL
|
||||||
'а' < 'b'
|
'а' < 'b'
|
||||||
'а' < 'bb'
|
'а' < 'bb'
|
||||||
'а' < 'ab'
|
'а' < 'ab'
|
||||||
'а' > NULL
|
'а' > ''
|
||||||
'y' < 'k'
|
'y' < 'k'
|
||||||
|
|
|
@ -33,7 +33,7 @@ function ut_main()
|
||||||
$test_params = array(
|
$test_params = array(
|
||||||
'abc', 'abd', 'aaa',
|
'abc', 'abd', 'aaa',
|
||||||
'аа', 'а', 'z',
|
'аа', 'а', 'z',
|
||||||
'', null , '3',
|
'', '3',
|
||||||
'y' , 'i' , 'k'
|
'y' , 'i' , 'k'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -70,8 +70,6 @@ source: z
|
||||||
key: 5c01050105
|
key: 5c01050105
|
||||||
source:
|
source:
|
||||||
key: 0101
|
key: 0101
|
||||||
source:
|
|
||||||
key: 0101
|
|
||||||
source: 3
|
source: 3
|
||||||
key: 1901050105
|
key: 1901050105
|
||||||
source: y
|
source: y
|
||||||
|
|
|
@ -107,6 +107,18 @@ ArgumentCountError: NumberFormatter::create() expects at least 2 arguments, 0 gi
|
||||||
Error: NumberFormatter object is already constructed in %s on line %d
|
Error: NumberFormatter object is already constructed in %s on line %d
|
||||||
'U_ZERO_ERROR'
|
'U_ZERO_ERROR'
|
||||||
|
|
||||||
|
Deprecated: NumberFormatter::__construct(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: NumberFormatter::__construct(): Passing null to parameter #2 ($style) of type int is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: NumberFormatter::create(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: NumberFormatter::create(): Passing null to parameter #2 ($style) of type int is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: numfmt_create(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: numfmt_create(): Passing null to parameter #2 ($style) of type int is deprecated in %s on line %d
|
||||||
|
|
||||||
IntlException: Constructor failed in %s on line %d
|
IntlException: Constructor failed in %s on line %d
|
||||||
'numfmt_create: number formatter creation failed: U_UNSUPPORTED_ERROR'
|
'numfmt_create: number formatter creation failed: U_UNSUPPORTED_ERROR'
|
||||||
'numfmt_create: number formatter creation failed: U_UNSUPPORTED_ERROR'
|
'numfmt_create: number formatter creation failed: U_UNSUPPORTED_ERROR'
|
||||||
|
|
|
@ -29,7 +29,7 @@ try {
|
||||||
echo $e->getMessage(), "\n";
|
echo $e->getMessage(), "\n";
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
var_dump(new IntlGregorianCalendar(1,2,3,4,NULL,array()));
|
var_dump(new IntlGregorianCalendar(1,2,3,4,5,array()));
|
||||||
} catch (TypeError $e) {
|
} catch (TypeError $e) {
|
||||||
echo $e->getMessage(), "\n";
|
echo $e->getMessage(), "\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -10,7 +10,7 @@ ini_set("intl.error_level", E_WARNING);
|
||||||
|
|
||||||
date_default_timezone_set('Europe/Amsterdam');
|
date_default_timezone_set('Europe/Amsterdam');
|
||||||
|
|
||||||
$intlcal = intlgregcal_create_instance(2012, 1, 29, 16, 0, NULL);
|
$intlcal = intlgregcal_create_instance(2012, 1, 29, 16, 0, 0);
|
||||||
var_dump($intlcal->getTimeZone()->getId());
|
var_dump($intlcal->getTimeZone()->getId());
|
||||||
var_dump($intlcal->getTime(), (float)strtotime('2012-02-29 16:00:00') * 1000);
|
var_dump($intlcal->getTime(), (float)strtotime('2012-02-29 16:00:00') * 1000);
|
||||||
|
|
||||||
|
|
|
@ -126,9 +126,21 @@ ArgumentCountError: msgfmt_create() expects exactly 2 arguments, 1 given in %s o
|
||||||
ArgumentCountError: MessageFormatter::create() expects exactly 2 arguments, 1 given in %s on line %d
|
ArgumentCountError: MessageFormatter::create() expects exactly 2 arguments, 1 given in %s on line %d
|
||||||
'U_ZERO_ERROR'
|
'U_ZERO_ERROR'
|
||||||
|
|
||||||
|
Deprecated: MessageFormatter::__construct(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: MessageFormatter::__construct(): Passing null to parameter #2 ($pattern) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
IntlException: msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR in %s on line %d
|
IntlException: msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR in %s on line %d
|
||||||
'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
|
'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
|
||||||
|
|
||||||
|
Deprecated: MessageFormatter::create(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: MessageFormatter::create(): Passing null to parameter #2 ($pattern) of type string is deprecated in %s on line %d
|
||||||
'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
|
'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
|
||||||
|
|
||||||
|
Deprecated: msgfmt_create(): Passing null to parameter #1 ($locale) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: msgfmt_create(): Passing null to parameter #2 ($pattern) of type string is deprecated in %s on line %d
|
||||||
'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
|
'msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR'
|
||||||
|
|
||||||
IntlException: msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR in %s on line %d
|
IntlException: msgfmt_create: message formatter creation failed: U_ILLEGAL_ARGUMENT_ERROR in %s on line %d
|
||||||
|
|
|
@ -142,7 +142,7 @@ function ut_nfmt_create( $locale, $style, $pattern = null )
|
||||||
return numfmt_create( $locale, $style, $pattern );
|
return numfmt_create( $locale, $style, $pattern );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
function ut_nfmt_format( $fmt, $number, $type = null )
|
function ut_nfmt_format( $fmt, $number, $type = NumberFormatter::TYPE_DEFAULT )
|
||||||
{
|
{
|
||||||
return $GLOBALS['oo-mode'] ? $fmt->format( $number, $type ) : numfmt_format( $fmt, $number, $type );
|
return $GLOBALS['oo-mode'] ? $fmt->format( $number, $type ) : numfmt_format( $fmt, $number, $type );
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,6 +31,8 @@ NULL
|
||||||
NULL
|
NULL
|
||||||
NULL
|
NULL
|
||||||
NULL
|
NULL
|
||||||
|
|
||||||
|
Deprecated: json_decode(): Passing null to parameter #1 ($json) of type string is deprecated in %s on line %d
|
||||||
NULL
|
NULL
|
||||||
object(stdClass)#%d (1) {
|
object(stdClass)#%d (1) {
|
||||||
["test"]=>
|
["test"]=>
|
||||||
|
|
|
@ -2,8 +2,6 @@
|
||||||
Bug #69187 json_last_error return BC in PHP7
|
Bug #69187 json_last_error return BC in PHP7
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
var_dump(json_decode(NULL));
|
|
||||||
var_dump(json_last_error());
|
|
||||||
var_dump(json_decode(FALSE));
|
var_dump(json_decode(FALSE));
|
||||||
var_dump(json_last_error());
|
var_dump(json_last_error());
|
||||||
var_dump(json_decode(""));
|
var_dump(json_decode(""));
|
||||||
|
@ -33,8 +31,6 @@ NULL
|
||||||
int(4)
|
int(4)
|
||||||
NULL
|
NULL
|
||||||
int(4)
|
int(4)
|
||||||
NULL
|
|
||||||
int(4)
|
|
||||||
int(0)
|
int(0)
|
||||||
int(0)
|
int(0)
|
||||||
int(1)
|
int(1)
|
||||||
|
|
|
@ -3,14 +3,14 @@ Bug #72069 (Behavior \JsonSerializable different from json_encode)
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
$result = json_encode(['end' => json_decode(null, true)]);
|
$result = json_encode(['end' => json_decode('', true)]);
|
||||||
var_dump($result);
|
var_dump($result);
|
||||||
|
|
||||||
class A implements \JsonSerializable
|
class A implements \JsonSerializable
|
||||||
{
|
{
|
||||||
function jsonSerialize()
|
function jsonSerialize()
|
||||||
{
|
{
|
||||||
return ['end' => json_decode(null, true)];
|
return ['end' => json_decode('', true)];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
$a = new A();
|
$a = new A();
|
||||||
|
|
|
@ -8,7 +8,7 @@ Chad Sikorra <Chad.Sikorra@gmail.com>
|
||||||
<?php
|
<?php
|
||||||
$subject = " Joe,= \rSmith ";
|
$subject = " Joe,= \rSmith ";
|
||||||
|
|
||||||
var_dump(ldap_escape($subject, null, LDAP_ESCAPE_DN));
|
var_dump(ldap_escape($subject, '', LDAP_ESCAPE_DN));
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
string(24) "\20Joe\2c\3d \0dSmith\20"
|
string(24) "\20Joe\2c\3d \0dSmith\20"
|
||||||
|
|
|
@ -9,11 +9,11 @@ require_once('skipif.inc');
|
||||||
/* We are assuming 3333 is not connectable */
|
/* We are assuming 3333 is not connectable */
|
||||||
$ldap = ldap_connect('127.0.0.1', 3333);
|
$ldap = ldap_connect('127.0.0.1', 3333);
|
||||||
|
|
||||||
ldap_mod_replace($ldap, null, array(
|
ldap_mod_replace($ldap, '', array(
|
||||||
'lockoutTime' => array(0),
|
'lockoutTime' => array(0),
|
||||||
));
|
));
|
||||||
|
|
||||||
ldap_modify_batch($ldap, null, array( [
|
ldap_modify_batch($ldap, '', array( [
|
||||||
"attrib" => "mail",
|
"attrib" => "mail",
|
||||||
"modtype" => LDAP_MODIFY_BATCH_ADD,
|
"modtype" => LDAP_MODIFY_BATCH_ADD,
|
||||||
"values" => [
|
"values" => [
|
||||||
|
|
|
@ -7,7 +7,7 @@ ldap_escape() test filter and DN
|
||||||
|
|
||||||
$subject = 'foo=bar(baz)*';
|
$subject = 'foo=bar(baz)*';
|
||||||
|
|
||||||
var_dump(ldap_escape($subject, null, LDAP_ESCAPE_DN | LDAP_ESCAPE_FILTER));
|
var_dump(ldap_escape($subject, '', LDAP_ESCAPE_DN | LDAP_ESCAPE_FILTER));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
|
@ -7,7 +7,7 @@ ldap_escape() test DN
|
||||||
|
|
||||||
$subject = 'foo=bar(baz)*';
|
$subject = 'foo=bar(baz)*';
|
||||||
|
|
||||||
var_dump(ldap_escape($subject, null, LDAP_ESCAPE_DN));
|
var_dump(ldap_escape($subject, '', LDAP_ESCAPE_DN));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
|
@ -7,7 +7,7 @@ ldap_escape() test filter
|
||||||
|
|
||||||
$subject = 'foo=bar(baz)*';
|
$subject = 'foo=bar(baz)*';
|
||||||
|
|
||||||
var_dump(ldap_escape($subject, null, LDAP_ESCAPE_FILTER));
|
var_dump(ldap_escape($subject, '', LDAP_ESCAPE_FILTER));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
|
@ -8,7 +8,7 @@ if (!extension_loaded('ldap')) die('skip ldap extension not available');
|
||||||
<?php
|
<?php
|
||||||
$array = [123, 456, 789];
|
$array = [123, 456, 789];
|
||||||
try {
|
try {
|
||||||
ldap_read(null, null, null, $array);
|
ldap_read(null, '', '', $array);
|
||||||
} catch (TypeError $err) {}
|
} catch (TypeError $err) {}
|
||||||
var_dump($array);
|
var_dump($array);
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -20,7 +20,7 @@ ldap_set_option($link, LDAP_OPT_NETWORK_TIMEOUT, 44);
|
||||||
|
|
||||||
insert_dummy_data($link, $base);
|
insert_dummy_data($link, $base);
|
||||||
var_dump(
|
var_dump(
|
||||||
$result = ldap_search($link, "$base", "(objectClass=person)", array(), null, 111, 22, LDAP_DEREF_NEVER),
|
$result = ldap_search($link, "$base", "(objectClass=person)", array(), 0, 111, 22, LDAP_DEREF_NEVER),
|
||||||
ldap_get_entries($link, $result)
|
ldap_get_entries($link, $result)
|
||||||
);
|
);
|
||||||
var_dump(
|
var_dump(
|
||||||
|
|
|
@ -13,10 +13,7 @@ function_exists('mb_ereg') or die("skip mb_ereg() is not available in this build
|
||||||
* pattern is supplied to mb_ereg. Similar error message to ereg().
|
* pattern is supplied to mb_ereg. Similar error message to ereg().
|
||||||
*/
|
*/
|
||||||
|
|
||||||
$unset_var = 10;
|
$inputs = array(false, FALSE, "", '');
|
||||||
unset ($unset_var);
|
|
||||||
$inputs = array(NULL, null, false, FALSE, "", '', @$undefined_var,
|
|
||||||
@$unset_var);
|
|
||||||
|
|
||||||
$iterator = 1;
|
$iterator = 1;
|
||||||
foreach($inputs as $input) {
|
foreach($inputs as $input) {
|
||||||
|
@ -70,31 +67,3 @@ mb_ereg(): Argument #1 ($pattern) must not be empty
|
||||||
With $regs arg:
|
With $regs arg:
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
mb_ereg(): Argument #1 ($pattern) must not be empty
|
||||||
NULL
|
NULL
|
||||||
|
|
||||||
-- Iteration 5 --
|
|
||||||
Without $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
With $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
NULL
|
|
||||||
|
|
||||||
-- Iteration 6 --
|
|
||||||
Without $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
With $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
NULL
|
|
||||||
|
|
||||||
-- Iteration 7 --
|
|
||||||
Without $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
With $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
NULL
|
|
||||||
|
|
||||||
-- Iteration 8 --
|
|
||||||
Without $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
With $regs arg:
|
|
||||||
mb_ereg(): Argument #1 ($pattern) must not be empty
|
|
||||||
NULL
|
|
||||||
|
|
|
@ -9,7 +9,7 @@ if (!function_exists('mb_ereg')) die('skip mbregex support not available');
|
||||||
<?php
|
<?php
|
||||||
$var0 = "e";
|
$var0 = "e";
|
||||||
$var2 = "";
|
$var2 = "";
|
||||||
$var3 = NULL;
|
$var3 = "";
|
||||||
try {
|
try {
|
||||||
$var8 = mb_ereg_replace($var2,$var3,$var3,$var0);
|
$var8 = mb_ereg_replace($var2,$var3,$var3,$var0);
|
||||||
var_dump($var8);
|
var_dump($var8);
|
||||||
|
|
|
@ -9,5 +9,6 @@ if (!function_exists('mb_ereg')) die('skip mbregex support not available');
|
||||||
<?php
|
<?php
|
||||||
var_dump(mb_ereg_search_init(NULL));
|
var_dump(mb_ereg_search_init(NULL));
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
|
Deprecated: mb_ereg_search_init(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
bool(true)
|
bool(true)
|
||||||
|
|
|
@ -16,10 +16,6 @@ $replacement = 'string_val';
|
||||||
$string = 'string_val';
|
$string = 'string_val';
|
||||||
$option = '';
|
$option = '';
|
||||||
|
|
||||||
//get an unset variable
|
|
||||||
$unset_var = 10;
|
|
||||||
unset ($unset_var);
|
|
||||||
|
|
||||||
// get a class
|
// get a class
|
||||||
class classA
|
class classA
|
||||||
{
|
{
|
||||||
|
@ -49,10 +45,6 @@ $inputs = array(
|
||||||
12.3456789000E-10,
|
12.3456789000E-10,
|
||||||
.5,
|
.5,
|
||||||
|
|
||||||
// null data
|
|
||||||
/*10*/ NULL,
|
|
||||||
null,
|
|
||||||
|
|
||||||
// boolean data
|
// boolean data
|
||||||
/*12*/ true,
|
/*12*/ true,
|
||||||
false,
|
false,
|
||||||
|
@ -71,12 +63,6 @@ $inputs = array(
|
||||||
// object data
|
// object data
|
||||||
/*21*/ new classA(),
|
/*21*/ new classA(),
|
||||||
|
|
||||||
// undefined data
|
|
||||||
/*22*/ @$undefined_var,
|
|
||||||
|
|
||||||
// unset data
|
|
||||||
/*23*/ @$unset_var,
|
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
// loop through each element of the array for pattern
|
// loop through each element of the array for pattern
|
||||||
|
@ -121,7 +107,7 @@ string(10) "string_val"
|
||||||
string(10) "string_val"
|
string(10) "string_val"
|
||||||
|
|
||||||
-- Iteration 10 --
|
-- Iteration 10 --
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
string(10) "string_val"
|
||||||
|
|
||||||
-- Iteration 11 --
|
-- Iteration 11 --
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
||||||
|
@ -133,32 +119,20 @@ string(10) "string_val"
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
||||||
|
|
||||||
-- Iteration 14 --
|
-- Iteration 14 --
|
||||||
string(10) "string_val"
|
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
||||||
|
|
||||||
-- Iteration 15 --
|
-- Iteration 15 --
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
||||||
|
|
||||||
-- Iteration 16 --
|
-- Iteration 16 --
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
string(10) "string_val"
|
||||||
|
|
||||||
-- Iteration 17 --
|
-- Iteration 17 --
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
string(10) "string_val"
|
||||||
|
|
||||||
-- Iteration 18 --
|
-- Iteration 18 --
|
||||||
string(10) "string_val"
|
string(10) "string_val"
|
||||||
|
|
||||||
-- Iteration 19 --
|
-- Iteration 19 --
|
||||||
string(10) "string_val"
|
string(10) "string_val"
|
||||||
|
|
||||||
-- Iteration 20 --
|
|
||||||
string(10) "string_val"
|
|
||||||
|
|
||||||
-- Iteration 21 --
|
|
||||||
string(10) "string_val"
|
|
||||||
|
|
||||||
-- Iteration 22 --
|
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
|
||||||
|
|
||||||
-- Iteration 23 --
|
|
||||||
string(120) "string_valsstring_valtstring_valrstring_valistring_valnstring_valgstring_val_string_valvstring_valastring_vallstring_val"
|
|
||||||
Done
|
Done
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
--TEST--
|
--TEST--
|
||||||
Optional long parameter might be null
|
Optional long parameter might be null (deprecated)
|
||||||
--SKIPIF--
|
--SKIPIF--
|
||||||
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
|
<?php extension_loaded('mbstring') or die('skip mbstring not available'); ?>
|
||||||
--FILE--
|
--FILE--
|
||||||
|
@ -16,15 +16,32 @@ echo mb_substr('foobarbaz', 6, null, 'UTF-8') . "\n";
|
||||||
echo mb_strcut('foobarbaz', 6, null, 'UTF-8') . "\n";
|
echo mb_strcut('foobarbaz', 6, null, 'UTF-8') . "\n";
|
||||||
echo mb_strimwidth('foobar', 0, 3, null, 'UTF-8') . "\n";
|
echo mb_strimwidth('foobar', 0, 3, null, 'UTF-8') . "\n";
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
|
Deprecated: mb_strpos(): Passing null to parameter #3 ($offset) of type int is deprecated in %s on line %d
|
||||||
1
|
1
|
||||||
|
|
||||||
|
Deprecated: mb_strrpos(): Passing null to parameter #3 ($offset) of type int is deprecated in %s on line %d
|
||||||
2
|
2
|
||||||
|
|
||||||
|
Deprecated: mb_stripos(): Passing null to parameter #3 ($offset) of type int is deprecated in %s on line %d
|
||||||
1
|
1
|
||||||
|
|
||||||
|
Deprecated: mb_strripos(): Passing null to parameter #3 ($offset) of type int is deprecated in %s on line %d
|
||||||
2
|
2
|
||||||
|
|
||||||
|
Deprecated: mb_strstr(): Passing null to parameter #3 ($before_needle) of type bool is deprecated in %s on line %d
|
||||||
barbaz
|
barbaz
|
||||||
|
|
||||||
|
Deprecated: mb_strrchr(): Passing null to parameter #3 ($before_needle) of type bool is deprecated in %s on line %d
|
||||||
baz
|
baz
|
||||||
|
|
||||||
|
Deprecated: mb_stristr(): Passing null to parameter #3 ($before_needle) of type bool is deprecated in %s on line %d
|
||||||
barbaz
|
barbaz
|
||||||
|
|
||||||
|
Deprecated: mb_strrichr(): Passing null to parameter #3 ($before_needle) of type bool is deprecated in %s on line %d
|
||||||
baz
|
baz
|
||||||
baz
|
baz
|
||||||
baz
|
baz
|
||||||
|
|
||||||
|
Deprecated: mb_strimwidth(): Passing null to parameter #4 ($trim_marker) of type string is deprecated in %s on line %d
|
||||||
foo
|
foo
|
||||||
|
|
|
@ -12,13 +12,14 @@ class DbConnection {
|
||||||
public function connect() {
|
public function connect() {
|
||||||
require_once("connect.inc");
|
require_once("connect.inc");
|
||||||
|
|
||||||
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket);
|
/* Pass false as $connect_flags cannot be accessed via globals. */
|
||||||
|
$link = my_mysqli_connect($host, $user, $passwd, $db, $port, $socket, false);
|
||||||
var_dump($link);
|
var_dump($link);
|
||||||
|
|
||||||
$link = mysqli_init();
|
$link = mysqli_init();
|
||||||
var_dump($link);
|
var_dump($link);
|
||||||
|
|
||||||
$mysql = new my_mysqli($host, $user, $passwd, $db, $port, $socket);
|
$mysql = new my_mysqli($host, $user, $passwd, $db, $port, $socket, false);
|
||||||
$mysql->query("DROP TABLE IF EXISTS test_warnings");
|
$mysql->query("DROP TABLE IF EXISTS test_warnings");
|
||||||
$mysql->query("CREATE TABLE test_warnings (a int not null)");
|
$mysql->query("CREATE TABLE test_warnings (a int not null)");
|
||||||
$mysql->query("SET sql_mode=''");
|
$mysql->query("SET sql_mode=''");
|
||||||
|
|
|
@ -12,11 +12,11 @@ if (!$IS_MYSQLND) {
|
||||||
<?php
|
<?php
|
||||||
error_reporting(E_ALL);
|
error_reporting(E_ALL);
|
||||||
$tablica = array();
|
$tablica = array();
|
||||||
$test1 = mysqli_poll($test2, $test3, $tablica, null);
|
$test1 = mysqli_poll($test2, $test3, $tablica, 0);
|
||||||
|
|
||||||
$test2 = array();
|
$test2 = array();
|
||||||
$test2 = array();
|
$test2 = array();
|
||||||
$test1 = mysqli_poll($test2, $test3, $tablica, null);
|
$test1 = mysqli_poll($test2, $test3, $tablica, 0);
|
||||||
echo "okey";
|
echo "okey";
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
|
|
|
@ -11,9 +11,8 @@ require_once('skipifconnectfailure.inc');
|
||||||
|
|
||||||
require('table.inc');
|
require('table.inc');
|
||||||
|
|
||||||
// Zend will cast the NULL to 0
|
|
||||||
try {
|
try {
|
||||||
mysqli_kill($link, null);
|
mysqli_kill($link, 0);
|
||||||
} catch (\ValueError $e) {
|
} catch (\ValueError $e) {
|
||||||
echo $e->getMessage() . \PHP_EOL;
|
echo $e->getMessage() . \PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -35,12 +35,12 @@ if (!function_exists('mysqli_stmt_get_result'))
|
||||||
printf("[004] It is very unlikely that SHOW ENGINES returns no data, check manually\n");
|
printf("[004] It is very unlikely that SHOW ENGINES returns no data, check manually\n");
|
||||||
} else {
|
} else {
|
||||||
$found = false;
|
$found = false;
|
||||||
foreach ($engines as $k => $engine)
|
foreach ($engines as $engine) {
|
||||||
foreach ($engine as $k => $v)
|
if (stristr($engine[0], 'MyISAM')) {
|
||||||
if (stristr($v, 'MyISAM')) {
|
$found = true;
|
||||||
$found = true;
|
break;
|
||||||
break;
|
}
|
||||||
}
|
}
|
||||||
if (!$found)
|
if (!$found)
|
||||||
printf("[005] It is very unlikely that SHOW ENGINES does not show MyISAM, check manually\n");
|
printf("[005] It is very unlikely that SHOW ENGINES does not show MyISAM, check manually\n");
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,12 @@ var_dump(odbc_fetch_row($result));
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
resource(%d) of type (odbc result)
|
resource(%d) of type (odbc result)
|
||||||
bool(false)
|
bool(false)
|
||||||
|
|
||||||
|
Deprecated: odbc_columnprivileges(): Passing null to parameter #3 ($schema) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: odbc_columnprivileges(): Passing null to parameter #4 ($table) of type string is deprecated in %s on line %d
|
||||||
|
|
||||||
|
Deprecated: odbc_columnprivileges(): Passing null to parameter #5 ($column) of type string is deprecated in %s on line %d
|
||||||
resource(%d) of type (odbc result)
|
resource(%d) of type (odbc result)
|
||||||
bool(false)
|
bool(false)
|
||||||
resource(%d) of type (odbc result)
|
resource(%d) of type (odbc result)
|
||||||
|
|
|
@ -24,7 +24,7 @@ foreach ($methods as $method) {
|
||||||
|
|
||||||
// no IV
|
// no IV
|
||||||
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
||||||
NULL, $test['tag'], $test['aad']));
|
'', $test['tag'], $test['aad']));
|
||||||
// failed because no AAD
|
// failed because no AAD
|
||||||
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
||||||
$test['iv'], $test['tag']));
|
$test['iv'], $test['tag']));
|
||||||
|
|
|
@ -22,7 +22,7 @@ foreach ($tests as $idx => $test) {
|
||||||
|
|
||||||
// no IV
|
// no IV
|
||||||
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
||||||
NULL, $test['tag'], $test['aad']));
|
'', $test['tag'], $test['aad']));
|
||||||
// failed because no AAD
|
// failed because no AAD
|
||||||
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
||||||
$test['iv'], $test['tag']));
|
$test['iv'], $test['tag']));
|
||||||
|
|
|
@ -22,7 +22,7 @@ foreach ($tests as $idx => $test) {
|
||||||
|
|
||||||
// no IV
|
// no IV
|
||||||
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
||||||
NULL, $test['tag'], $test['aad']));
|
'', $test['tag'], $test['aad']));
|
||||||
|
|
||||||
// IV too long
|
// IV too long
|
||||||
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
var_dump(openssl_decrypt($test['ct'], $method, $test['key'], OPENSSL_RAW_DATA,
|
||||||
|
|
|
@ -24,7 +24,7 @@ foreach ($methods as $method) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty IV error
|
// Empty IV error
|
||||||
var_dump(openssl_encrypt('data', $method, 'password', 0, NULL, $tag, ''));
|
var_dump(openssl_encrypt('data', $method, 'password', 0, '', $tag, ''));
|
||||||
|
|
||||||
// Test setting different IV length and tag length
|
// Test setting different IV length and tag length
|
||||||
var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 10), $tag, '', 14));
|
var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 10), $tag, '', 14));
|
||||||
|
|
|
@ -22,7 +22,7 @@ foreach ($tests as $idx => $test) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty IV error
|
// Empty IV error
|
||||||
var_dump(openssl_encrypt('data', $method, 'password', 0, NULL, $tag, ''));
|
var_dump(openssl_encrypt('data', $method, 'password', 0, '', $tag, ''));
|
||||||
|
|
||||||
// Failing to retrieve tag (max is 16 bytes)
|
// Failing to retrieve tag (max is 16 bytes)
|
||||||
var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 32), $tag, '', 20));
|
var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 32), $tag, '', 20));
|
||||||
|
|
|
@ -22,7 +22,7 @@ foreach ($tests as $idx => $test) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Empty IV error
|
// Empty IV error
|
||||||
var_dump(openssl_encrypt('data', $method, 'password', 0, NULL, $tag, ''));
|
var_dump(openssl_encrypt('data', $method, 'password', 0, '', $tag, ''));
|
||||||
|
|
||||||
// Failing to retrieve tag (must be at most 16 bytes)
|
// Failing to retrieve tag (must be at most 16 bytes)
|
||||||
var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 12), $tag, '', 20));
|
var_dump(openssl_encrypt('data', $method, 'password', 0, str_repeat('x', 12), $tag, '', 20));
|
||||||
|
|
|
@ -29,9 +29,9 @@ if (PHP_EOL !== "\n") {
|
||||||
|
|
||||||
var_dump(strcmp($output, $a));
|
var_dump(strcmp($output, $a));
|
||||||
var_dump(strcmp($output, $output2));
|
var_dump(strcmp($output, $output2));
|
||||||
var_dump(strcmp($output, $output3));
|
var_dump(strcmp($output, $output4));
|
||||||
var_dump(strcmp($output, $output4)); // different
|
var_dump($output3);
|
||||||
var_dump(strcmp($output, $output5)); // different
|
var_dump($output5);
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
bool(true)
|
bool(true)
|
||||||
|
@ -44,5 +44,5 @@ openssl_x509_export(): Argument #1 ($certificate) must be of type OpenSSLCertifi
|
||||||
int(0)
|
int(0)
|
||||||
int(0)
|
int(0)
|
||||||
int(%d)
|
int(%d)
|
||||||
int(0)
|
NULL
|
||||||
int(%d)
|
NULL
|
||||||
|
|
|
@ -29,10 +29,12 @@ $db = new PDO($dsn, $user, $pass, [PDO::ATTR_DEFAULT_STR_PARAM => PDO::PARAM_STR
|
||||||
var_dump($db->getAttribute(PDO::ATTR_DEFAULT_STR_PARAM) === PDO::PARAM_STR_NATL);
|
var_dump($db->getAttribute(PDO::ATTR_DEFAULT_STR_PARAM) === PDO::PARAM_STR_NATL);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
string(3) "'1'"
|
string(3) "'1'"
|
||||||
string(2) "''"
|
string(2) "''"
|
||||||
string(4) "'42'"
|
string(4) "'42'"
|
||||||
|
|
||||||
|
Deprecated: PDO::quote(): Passing null to parameter #1 ($string) of type string is deprecated in %s on line %d
|
||||||
string(2) "''"
|
string(2) "''"
|
||||||
string(4) "''''"
|
string(4) "''''"
|
||||||
string(5) "'foo'"
|
string(5) "'foo'"
|
||||||
|
|
|
@ -10,7 +10,7 @@ phar.readonly=0
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
$phar = __DIR__ . '/files/stuboflength1041.phar';
|
$phar = __DIR__ . '/files/stuboflength1041.phar';
|
||||||
foreach (new RecursiveIteratorIterator(new Phar($phar, null, 'stuboflength1041.phar')) as $item) {
|
foreach (new RecursiveIteratorIterator(new Phar($phar, alias: 'stuboflength1041.phar')) as $item) {
|
||||||
var_dump($item->getFileName());
|
var_dump($item->getFileName());
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
|
|
|
@ -13,9 +13,9 @@ var_dump(decoct(umask()));
|
||||||
$sFile = tempnam(__DIR__, 'test77022');
|
$sFile = tempnam(__DIR__, 'test77022');
|
||||||
var_dump(decoct(stat($sFile)['mode']));
|
var_dump(decoct(stat($sFile)['mode']));
|
||||||
|
|
||||||
foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $mode => $ext) {
|
foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $format => $ext) {
|
||||||
clearstatcache();
|
clearstatcache();
|
||||||
$phar = new PharData(__DIR__ . '/test77022.' . $ext, null, null, $mode);
|
$phar = new PharData(__DIR__ . '/test77022.' . $ext, format: $format);
|
||||||
$phar->addFile($sFile, 'test-file-phar');
|
$phar->addFile($sFile, 'test-file-phar');
|
||||||
$phar->addFromString("test-from-string", 'test-file-phar');
|
$phar->addFromString("test-from-string", 'test-file-phar');
|
||||||
$phar->extractTo(__DIR__);
|
$phar->extractTo(__DIR__);
|
||||||
|
@ -33,4 +33,4 @@ string(6) "100600"
|
||||||
string(6) "100600"
|
string(6) "100600"
|
||||||
string(6) "100644"
|
string(6) "100644"
|
||||||
string(6) "100600"
|
string(6) "100600"
|
||||||
string(6) "100644"
|
string(6) "100644"
|
||||||
|
|
|
@ -12,9 +12,9 @@ var_dump(decoct(umask()));
|
||||||
chmod(__DIR__ . '/test79082/test79082-testfile', 0644);
|
chmod(__DIR__ . '/test79082/test79082-testfile', 0644);
|
||||||
chmod(__DIR__ . '/test79082/test79082-testfile2', 0400);
|
chmod(__DIR__ . '/test79082/test79082-testfile2', 0400);
|
||||||
|
|
||||||
foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $mode => $ext) {
|
foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $format => $ext) {
|
||||||
clearstatcache();
|
clearstatcache();
|
||||||
$phar = new PharData(__DIR__ . '/test79082.' . $ext, null, null, $mode);
|
$phar = new PharData(__DIR__ . '/test79082.' . $ext, format: $format);
|
||||||
$phar->buildFromIterator(new \RecursiveDirectoryIterator(__DIR__ . '/test79082', \FilesystemIterator::SKIP_DOTS), __DIR__ . '/test79082');
|
$phar->buildFromIterator(new \RecursiveDirectoryIterator(__DIR__ . '/test79082', \FilesystemIterator::SKIP_DOTS), __DIR__ . '/test79082');
|
||||||
$phar->extractTo(__DIR__);
|
$phar->extractTo(__DIR__);
|
||||||
var_dump(decoct(stat(__DIR__ . '/test79082-testfile')['mode']));
|
var_dump(decoct(stat(__DIR__ . '/test79082-testfile')['mode']));
|
||||||
|
@ -22,9 +22,9 @@ foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $mode => $ext) {
|
||||||
unlink(__DIR__ . '/test79082-testfile');
|
unlink(__DIR__ . '/test79082-testfile');
|
||||||
unlink(__DIR__ . '/test79082-testfile2');
|
unlink(__DIR__ . '/test79082-testfile2');
|
||||||
}
|
}
|
||||||
foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $mode => $ext) {
|
foreach([Phar::TAR => 'tar', Phar::ZIP => 'zip'] as $format => $ext) {
|
||||||
clearstatcache();
|
clearstatcache();
|
||||||
$phar = new PharData(__DIR__ . '/test79082-d.' . $ext, null, null, $mode);
|
$phar = new PharData(__DIR__ . '/test79082-d.' . $ext, format: $format);
|
||||||
$phar->buildFromDirectory(__DIR__ . '/test79082');
|
$phar->buildFromDirectory(__DIR__ . '/test79082');
|
||||||
$phar->extractTo(__DIR__);
|
$phar->extractTo(__DIR__);
|
||||||
var_dump(decoct(stat(__DIR__ . '/test79082-testfile')['mode']));
|
var_dump(decoct(stat(__DIR__ . '/test79082-testfile')['mode']));
|
||||||
|
|
|
@ -35,7 +35,7 @@ foreach($files as $name => $cont)
|
||||||
if (empty($ulen)) $ulen = strlen($cont);
|
if (empty($ulen)) $ulen = strlen($cont);
|
||||||
if (empty($clen)) $clen = strlen($comp);
|
if (empty($clen)) $clen = strlen($comp);
|
||||||
if (empty($crc32))$crc32= crc32((binary)$cont);
|
if (empty($crc32))$crc32= crc32((binary)$cont);
|
||||||
if (isset($meta)) $meta = serialize($meta);
|
$meta = isset($meta) ? serialize($meta) : "";
|
||||||
|
|
||||||
// write manifest entry
|
// write manifest entry
|
||||||
$manifest .= pack('V', strlen($name)) . (binary)$name;
|
$manifest .= pack('V', strlen($name)) . (binary)$name;
|
||||||
|
|
|
@ -8,7 +8,7 @@ if (!function_exists('posix_initgroups')) die('skip posix_initgroups() not found
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
var_dump(posix_initgroups(NULL, NULL));
|
var_dump(posix_initgroups('', 0));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
|
@ -8,7 +8,7 @@ if (!function_exists('posix_mknod')) die('skip posix_mknod() not found');
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
var_dump(posix_mknod(NULL, NULL, NULL, NULL));
|
var_dump(posix_mknod('', 0, 0, 0));
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
|
|
|
@ -1,18 +0,0 @@
|
||||||
--TEST--
|
|
||||||
posix_mknod(): Basic tests
|
|
||||||
--SKIPIF--
|
|
||||||
<?php
|
|
||||||
if (!extension_loaded('posix')) die('skip - POSIX extension not loaded');
|
|
||||||
if (!function_exists('posix_mknod')) die('skip posix_mknod() not found');
|
|
||||||
?>
|
|
||||||
--FILE--
|
|
||||||
<?php
|
|
||||||
echo "Basic test of POSIX posix_mknod function\n";
|
|
||||||
var_dump(posix_mknod(NULL, NULL, NULL, NULL));
|
|
||||||
|
|
||||||
?>
|
|
||||||
===DONE====
|
|
||||||
--EXPECT--
|
|
||||||
Basic test of POSIX posix_mknod function
|
|
||||||
bool(false)
|
|
||||||
===DONE====
|
|
|
@ -22,8 +22,6 @@ var_dump(pspell_config_runtogether($cfg, true));
|
||||||
$p = pspell_new_config($cfg);
|
$p = pspell_new_config($cfg);
|
||||||
var_dump(pspell_check($p, 'theoasis'));
|
var_dump(pspell_check($p, 'theoasis'));
|
||||||
|
|
||||||
var_dump(pspell_config_runtogether($cfg, NULL))
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
bool(true)
|
bool(true)
|
||||||
|
@ -32,4 +30,3 @@ bool(false)
|
||||||
---
|
---
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(true)
|
|
||||||
|
|
|
@ -15,7 +15,6 @@ $name = tempnam(sys_get_temp_dir(), 'readline.tmp');
|
||||||
readline_add_history('foo');
|
readline_add_history('foo');
|
||||||
readline_add_history('');
|
readline_add_history('');
|
||||||
readline_add_history(1);
|
readline_add_history(1);
|
||||||
readline_add_history(NULL);
|
|
||||||
readline_write_history($name);
|
readline_write_history($name);
|
||||||
|
|
||||||
var_dump(file_get_contents($name));
|
var_dump(file_get_contents($name));
|
||||||
|
|
|
@ -16,7 +16,6 @@ $name = tempnam('/tmp', 'readline.tmp');
|
||||||
readline_add_history('foo');
|
readline_add_history('foo');
|
||||||
readline_add_history('');
|
readline_add_history('');
|
||||||
readline_add_history(1);
|
readline_add_history(1);
|
||||||
readline_add_history(NULL);
|
|
||||||
readline_write_history($name);
|
readline_write_history($name);
|
||||||
|
|
||||||
var_dump(file_get_contents($name));
|
var_dump(file_get_contents($name));
|
||||||
|
@ -25,9 +24,8 @@ unlink($name);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
string(21) "_HiStOrY_V2_
|
string(20) "_HiStOrY_V2_
|
||||||
foo
|
foo
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
|
@ -7,7 +7,7 @@ readline_add_history(): Basic test
|
||||||
|
|
||||||
var_dump(readline_add_history('foo'));
|
var_dump(readline_add_history('foo'));
|
||||||
var_dump(readline_list_history());
|
var_dump(readline_list_history());
|
||||||
var_dump(readline_add_history(NULL));
|
var_dump(readline_add_history(''));
|
||||||
var_dump(readline_list_history());
|
var_dump(readline_list_history());
|
||||||
var_dump(readline_clear_history());
|
var_dump(readline_clear_history());
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,6 @@ $name = tempnam('/tmp', 'readline.tmp');
|
||||||
readline_add_history('foo');
|
readline_add_history('foo');
|
||||||
readline_add_history('');
|
readline_add_history('');
|
||||||
readline_add_history(1);
|
readline_add_history(1);
|
||||||
readline_add_history(NULL);
|
|
||||||
readline_write_history($name);
|
readline_write_history($name);
|
||||||
|
|
||||||
var_dump(file_get_contents($name));
|
var_dump(file_get_contents($name));
|
||||||
|
@ -22,8 +21,7 @@ unlink($name);
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
string(8) "foo
|
string(7) "foo
|
||||||
|
|
||||||
1
|
1
|
||||||
|
|
||||||
"
|
"
|
||||||
|
|
|
@ -45,8 +45,10 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
ReflectionClass::__construct() expects exactly 1 argument, 0 given
|
ReflectionClass::__construct() expects exactly 1 argument, 0 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::__construct(): Passing null to parameter #1 ($objectOrClass) of type object|string is deprecated in %s on line %d
|
||||||
Class "" does not exist
|
Class "" does not exist
|
||||||
Class "1" does not exist
|
Class "1" does not exist
|
||||||
Class "1" does not exist
|
Class "1" does not exist
|
||||||
|
|
|
@ -8,7 +8,6 @@ class C {
|
||||||
|
|
||||||
$rc = new ReflectionClass("C");
|
$rc = new ReflectionClass("C");
|
||||||
echo "Check invalid params:\n";
|
echo "Check invalid params:\n";
|
||||||
var_dump($rc->getConstant(null));
|
|
||||||
var_dump($rc->getConstant(1));
|
var_dump($rc->getConstant(1));
|
||||||
var_dump($rc->getConstant(1.5));
|
var_dump($rc->getConstant(1.5));
|
||||||
var_dump($rc->getConstant(true));
|
var_dump($rc->getConstant(true));
|
||||||
|
@ -18,4 +17,3 @@ Check invalid params:
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
|
|
|
@ -54,10 +54,12 @@ try {
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
Check invalid params:
|
Check invalid params:
|
||||||
ReflectionClass::getMethod() expects exactly 1 argument, 0 given
|
ReflectionClass::getMethod() expects exactly 1 argument, 0 given
|
||||||
ReflectionClass::getMethod() expects exactly 1 argument, 2 given
|
ReflectionClass::getMethod() expects exactly 1 argument, 2 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::getMethod(): Passing null to parameter #1 ($name) of type string is deprecated in %s on line %d
|
||||||
Method C::() does not exist
|
Method C::() does not exist
|
||||||
Method C::1() does not exist
|
Method C::1() does not exist
|
||||||
Method C::1.5() does not exist
|
Method C::1.5() does not exist
|
||||||
|
|
|
@ -52,10 +52,12 @@ try {
|
||||||
echo $e->getMessage() . "\n";
|
echo $e->getMessage() . "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
Check invalid params:
|
Check invalid params:
|
||||||
ReflectionClass::getProperty() expects exactly 1 argument, 0 given
|
ReflectionClass::getProperty() expects exactly 1 argument, 0 given
|
||||||
ReflectionClass::getProperty() expects exactly 1 argument, 2 given
|
ReflectionClass::getProperty() expects exactly 1 argument, 2 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::getProperty(): Passing null to parameter #1 ($name) of type string is deprecated in %s on line %d
|
||||||
Property C::$ does not exist
|
Property C::$ does not exist
|
||||||
Property C::$1 does not exist
|
Property C::$1 does not exist
|
||||||
Property C::$1.5 does not exist
|
Property C::$1.5 does not exist
|
||||||
|
|
|
@ -38,9 +38,11 @@ try {
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
ReflectionClass::getStaticPropertyValue() expects at most 2 arguments, 3 given
|
ReflectionClass::getStaticPropertyValue() expects at most 2 arguments, 3 given
|
||||||
ReflectionClass::getStaticPropertyValue() expects at least 1 argument, 0 given
|
ReflectionClass::getStaticPropertyValue() expects at least 1 argument, 0 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::getStaticPropertyValue(): Passing null to parameter #1 ($name) of type string is deprecated in %s on line %d
|
||||||
Property C::$ does not exist
|
Property C::$ does not exist
|
||||||
string(3) "def"
|
string(3) "def"
|
||||||
ReflectionClass::getStaticPropertyValue(): Argument #1 ($name) must be of type string, array given
|
ReflectionClass::getStaticPropertyValue(): Argument #1 ($name) must be of type string, array given
|
||||||
|
|
|
@ -11,7 +11,6 @@ class C {
|
||||||
|
|
||||||
$rc = new ReflectionClass("C");
|
$rc = new ReflectionClass("C");
|
||||||
echo "Check invalid params:\n";
|
echo "Check invalid params:\n";
|
||||||
var_dump($rc->hasConstant(null));
|
|
||||||
var_dump($rc->hasConstant(1));
|
var_dump($rc->hasConstant(1));
|
||||||
var_dump($rc->hasConstant(1.5));
|
var_dump($rc->hasConstant(1.5));
|
||||||
var_dump($rc->hasConstant(true));
|
var_dump($rc->hasConstant(true));
|
||||||
|
@ -21,4 +20,3 @@ Check invalid params:
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ class C {
|
||||||
|
|
||||||
$rc = new ReflectionClass("C");
|
$rc = new ReflectionClass("C");
|
||||||
echo "Check invalid params:\n";
|
echo "Check invalid params:\n";
|
||||||
var_dump($rc->hasMethod(null));
|
|
||||||
var_dump($rc->hasMethod(1));
|
var_dump($rc->hasMethod(1));
|
||||||
var_dump($rc->hasMethod(1.5));
|
var_dump($rc->hasMethod(1.5));
|
||||||
var_dump($rc->hasMethod(true));
|
var_dump($rc->hasMethod(true));
|
||||||
|
@ -21,4 +20,3 @@ Check invalid params:
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ class C {
|
||||||
|
|
||||||
$rc = new ReflectionClass("C");
|
$rc = new ReflectionClass("C");
|
||||||
echo "Check invalid params:\n";
|
echo "Check invalid params:\n";
|
||||||
var_dump($rc->hasProperty(null));
|
|
||||||
var_dump($rc->hasProperty(1));
|
var_dump($rc->hasProperty(1));
|
||||||
var_dump($rc->hasProperty(1.5));
|
var_dump($rc->hasProperty(1.5));
|
||||||
var_dump($rc->hasProperty(true));
|
var_dump($rc->hasProperty(true));
|
||||||
|
@ -21,4 +20,3 @@ Check invalid params:
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
bool(false)
|
||||||
bool(false)
|
|
||||||
|
|
|
@ -65,7 +65,7 @@ try {
|
||||||
echo $e->getMessage() . "\n";
|
echo $e->getMessage() . "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
Does A implement A?
|
Does A implement A?
|
||||||
- Using object argument: A is not an interface
|
- Using object argument: A is not an interface
|
||||||
- Using string argument: A is not an interface
|
- Using string argument: A is not an interface
|
||||||
|
@ -146,6 +146,8 @@ Does I2 implement I2?
|
||||||
Test bad arguments:
|
Test bad arguments:
|
||||||
ReflectionClass::implementsInterface() expects exactly 1 argument, 0 given
|
ReflectionClass::implementsInterface() expects exactly 1 argument, 0 given
|
||||||
ReflectionClass::implementsInterface() expects exactly 1 argument, 2 given
|
ReflectionClass::implementsInterface() expects exactly 1 argument, 2 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::implementsInterface(): Passing null to parameter #1 ($interface) of type ReflectionClass|string is deprecated in %s on line %d
|
||||||
Interface "" does not exist
|
Interface "" does not exist
|
||||||
Interface "ThisClassDoesNotExist" does not exist
|
Interface "ThisClassDoesNotExist" does not exist
|
||||||
Interface "2" does not exist
|
Interface "2" does not exist
|
||||||
|
|
|
@ -35,10 +35,12 @@ try {
|
||||||
echo $e->getMessage() . "\n";
|
echo $e->getMessage() . "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
Test bad arguments:
|
Test bad arguments:
|
||||||
ReflectionClass::isSubclassOf() expects exactly 1 argument, 0 given
|
ReflectionClass::isSubclassOf() expects exactly 1 argument, 0 given
|
||||||
ReflectionClass::isSubclassOf() expects exactly 1 argument, 2 given
|
ReflectionClass::isSubclassOf() expects exactly 1 argument, 2 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::isSubclassOf(): Passing null to parameter #1 ($class) of type ReflectionClass|string is deprecated in %s on line %d
|
||||||
Class "" does not exist
|
Class "" does not exist
|
||||||
Class "ThisClassDoesNotExist" does not exist
|
Class "ThisClassDoesNotExist" does not exist
|
||||||
Class "2" does not exist
|
Class "2" does not exist
|
||||||
|
|
|
@ -43,10 +43,12 @@ try {
|
||||||
|
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
ReflectionClass::setStaticPropertyValue() expects exactly 2 arguments, 3 given
|
ReflectionClass::setStaticPropertyValue() expects exactly 2 arguments, 3 given
|
||||||
ReflectionClass::setStaticPropertyValue() expects exactly 2 arguments, 0 given
|
ReflectionClass::setStaticPropertyValue() expects exactly 2 arguments, 0 given
|
||||||
ReflectionClass::setStaticPropertyValue() expects exactly 2 arguments, 1 given
|
ReflectionClass::setStaticPropertyValue() expects exactly 2 arguments, 1 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::setStaticPropertyValue(): Passing null to parameter #1 ($name) of type string is deprecated in %s on line %d
|
||||||
Class C does not have a property named
|
Class C does not have a property named
|
||||||
Class C does not have a property named 1.5
|
Class C does not have a property named 1.5
|
||||||
ReflectionClass::setStaticPropertyValue(): Argument #1 ($name) must be of type string, array given
|
ReflectionClass::setStaticPropertyValue(): Argument #1 ($name) must be of type string, array given
|
||||||
|
|
|
@ -35,10 +35,12 @@ try {
|
||||||
echo $e->getMessage() . "\n";
|
echo $e->getMessage() . "\n";
|
||||||
}
|
}
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
Test bad arguments:
|
Test bad arguments:
|
||||||
ReflectionClass::isSubclassOf() expects exactly 1 argument, 0 given
|
ReflectionClass::isSubclassOf() expects exactly 1 argument, 0 given
|
||||||
ReflectionClass::isSubclassOf() expects exactly 1 argument, 2 given
|
ReflectionClass::isSubclassOf() expects exactly 1 argument, 2 given
|
||||||
|
|
||||||
|
Deprecated: ReflectionClass::isSubclassOf(): Passing null to parameter #1 ($class) of type ReflectionClass|string is deprecated in %s on line %d
|
||||||
Class "" does not exist
|
Class "" does not exist
|
||||||
Class "ThisClassDoesNotExist" does not exist
|
Class "ThisClassDoesNotExist" does not exist
|
||||||
Class "2" does not exist
|
Class "2" does not exist
|
||||||
|
|
|
@ -14,7 +14,7 @@ $sessionName = ini_get('session.name');
|
||||||
|
|
||||||
$sh->open($savePath, $sessionName);
|
$sh->open($savePath, $sessionName);
|
||||||
$sh->write("foo", "bar");
|
$sh->write("foo", "bar");
|
||||||
var_dump($sh->read(@$id));
|
var_dump($sh->read(""));
|
||||||
?>
|
?>
|
||||||
--EXPECTF--
|
--EXPECTF--
|
||||||
Warning: SessionHandler::open(): Session is not active in %s on line 10
|
Warning: SessionHandler::open(): Session is not active in %s on line 10
|
||||||
|
|
|
@ -27,11 +27,11 @@ try {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Warning outputs: Unable to attach or create shared memory segment
|
// Warning outputs: Unable to attach or create shared memory segment
|
||||||
var_dump(shmop_open(null, 'a', 0644, 1024));
|
var_dump(shmop_open(0, 'a', 0644, 1024));
|
||||||
|
|
||||||
// Shared memory segment size must be greater than zero
|
// Shared memory segment size must be greater than zero
|
||||||
try {
|
try {
|
||||||
shmop_open(null, 'a', 0644, 1024);
|
shmop_open(0, 'a', 0644, 1024);
|
||||||
} catch (ValueError $exception) {
|
} catch (ValueError $exception) {
|
||||||
echo $exception->getMessage() . "\n";
|
echo $exception->getMessage() . "\n";
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,10 +11,10 @@ if (!extension_loaded('sockets')) {
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
var_dump(socket_create_pair(AF_INET, null, null, $sockets));
|
var_dump(socket_create_pair(AF_INET, 0, 0, $sockets));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var_dump(socket_create_pair(31337, null, null, $sockets));
|
var_dump(socket_create_pair(31337, 0, 0, $sockets));
|
||||||
} catch (\ValueError $e) {
|
} catch (\ValueError $e) {
|
||||||
echo $e->getMessage() . \PHP_EOL;
|
echo $e->getMessage() . \PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,10 +11,10 @@ if (!extension_loaded('sockets')) {
|
||||||
--FILE--
|
--FILE--
|
||||||
<?php
|
<?php
|
||||||
|
|
||||||
var_dump(socket_create_pair(AF_INET, null, null, $sockets));
|
var_dump(socket_create_pair(AF_INET, 0, 0, $sockets));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
var_dump(socket_create_pair(31337, null, null, $sockets));
|
var_dump(socket_create_pair(31337, 0, 0, $sockets));
|
||||||
} catch (\ValueError $e) {
|
} catch (\ValueError $e) {
|
||||||
echo $e->getMessage() . \PHP_EOL;
|
echo $e->getMessage() . \PHP_EOL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,7 @@ Check for libsodium utils
|
||||||
$a = 'test';
|
$a = 'test';
|
||||||
sodium_memzero($a);
|
sodium_memzero($a);
|
||||||
if ($a !== 'test') {
|
if ($a !== 'test') {
|
||||||
echo strlen($a);
|
var_dump($a);
|
||||||
} else {
|
} else {
|
||||||
echo $a;
|
echo $a;
|
||||||
}
|
}
|
||||||
|
@ -107,7 +107,8 @@ try {
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECT--
|
||||||
0
|
NULL
|
||||||
|
|
||||||
bool(true)
|
bool(true)
|
||||||
bool(false)
|
bool(false)
|
||||||
string(22) "0000810102030405060708"
|
string(22) "0000810102030405060708"
|
||||||
|
|
|
@ -10,7 +10,8 @@ $array = new SplFixedArray( NULL );
|
||||||
print_r( $array );
|
print_r( $array );
|
||||||
|
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
|
Deprecated: SplFixedArray::__construct(): Passing null to parameter #1 ($size) of type int is deprecated in %s on line %d
|
||||||
SplFixedArray Object
|
SplFixedArray Object
|
||||||
(
|
(
|
||||||
)
|
)
|
||||||
|
|
|
@ -8,6 +8,7 @@ $fixed_array = new SplFixedArray(2);
|
||||||
$fixed_array->setSize(null);
|
$fixed_array->setSize(null);
|
||||||
var_dump($fixed_array);
|
var_dump($fixed_array);
|
||||||
?>
|
?>
|
||||||
--EXPECT--
|
--EXPECTF--
|
||||||
|
Deprecated: SplFixedArray::setSize(): Passing null to parameter #1 ($size) of type int is deprecated in %s on line %d
|
||||||
object(SplFixedArray)#1 (0) {
|
object(SplFixedArray)#1 (0) {
|
||||||
}
|
}
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue