diff --git a/ext/opcache/Optimizer/zend_func_info.c b/ext/opcache/Optimizer/zend_func_info.c index 85dc3d466c61d..5509741d0bcf1 100644 --- a/ext/opcache/Optimizer/zend_func_info.c +++ b/ext/opcache/Optimizer/zend_func_info.c @@ -197,11 +197,7 @@ static const func_info_t func_infos[] = { FN("str_pad", MAY_BE_STRING), F1("strchr", MAY_BE_FALSE | MAY_BE_STRING), F1("sprintf", MAY_BE_FALSE | MAY_BE_STRING), - F0("printf", MAY_BE_FALSE | MAY_BE_LONG), - F0("vprintf", MAY_BE_FALSE | MAY_BE_LONG), F1("vsprintf", MAY_BE_FALSE | MAY_BE_STRING), - F0("fprintf", MAY_BE_FALSE | MAY_BE_LONG), - F0("vfprintf", MAY_BE_FALSE | MAY_BE_LONG), F1("sscanf", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY), F1("fscanf", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ANY), F1("parse_url", MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_LONG), @@ -213,7 +209,6 @@ static const func_info_t func_infos[] = { #if defined(HAVE_SYMLINK) || defined(PHP_WIN32) F1("readlink", MAY_BE_FALSE | MAY_BE_STRING), #endif - F0("unlink", MAY_BE_FALSE | MAY_BE_TRUE), F1("exec", MAY_BE_FALSE | MAY_BE_STRING), F1("system", MAY_BE_FALSE | MAY_BE_STRING), F1("escapeshellcmd", MAY_BE_STRING), @@ -223,9 +218,6 @@ static const func_info_t func_infos[] = { #ifdef PHP_CAN_SUPPORT_PROC_OPEN F1("proc_open", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("proc_get_status", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING), -#endif -#ifdef HAVE_NICE - F0("proc_nice", MAY_BE_FALSE | MAY_BE_TRUE), #endif F1("random_bytes", MAY_BE_STRING), #if HAVE_GETSERVBYPORT @@ -283,12 +275,8 @@ static const func_info_t func_infos[] = { FN("forward_static_call_array", UNKNOWN_INFO), F1("serialize", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), FN("unserialize", UNKNOWN_INFO), - F0("var_dump", MAY_BE_NULL), F1("var_export", MAY_BE_NULL | MAY_BE_STRING), - F0("debug_zval_dump", MAY_BE_NULL), F1("print_r", MAY_BE_TRUE | MAY_BE_STRING), - F0("memory_get_usage", MAY_BE_FALSE | MAY_BE_LONG), - F0("memory_get_peak_usage", MAY_BE_FALSE | MAY_BE_LONG), F0("register_shutdown_function", MAY_BE_NULL | MAY_BE_FALSE), F1("highlight_file", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), F1("show_source", MAY_BE_FALSE | MAY_BE_STRING), @@ -301,7 +289,6 @@ static const func_info_t func_infos[] = { F1("get_include_path", MAY_BE_FALSE | MAY_BE_STRING), F1("set_include_path", MAY_BE_FALSE | MAY_BE_STRING), F1("headers_list", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), - F0("http_response_code", MAY_BE_FALSE | MAY_BE_LONG), F1("parse_ini_file", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_DOUBLE | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), F1("parse_ini_string", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_DOUBLE | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), #if ZEND_DEBUG @@ -318,95 +305,46 @@ static const func_info_t func_infos[] = { F1("dns_get_record", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ARRAY), # endif #endif - F0("intval", MAY_BE_LONG), - F0("floatval", MAY_BE_DOUBLE), - F0("doubleval", MAY_BE_DOUBLE), FN("strval", MAY_BE_STRING), - F0("boolval", MAY_BE_FALSE | MAY_BE_TRUE), FN("gettype", MAY_BE_STRING), - F0("settype", MAY_BE_FALSE | MAY_BE_TRUE), - F0("pclose", MAY_BE_FALSE | MAY_BE_LONG), F1("popen", MAY_BE_FALSE | MAY_BE_RESOURCE), - F0("readfile", MAY_BE_FALSE | MAY_BE_LONG), - F0("rewind", MAY_BE_FALSE | MAY_BE_TRUE), - F0("rmdir", MAY_BE_FALSE | MAY_BE_TRUE), - F0("umask", MAY_BE_FALSE | MAY_BE_LONG), - F0("fclose", MAY_BE_FALSE | MAY_BE_TRUE), - F0("feof", MAY_BE_FALSE | MAY_BE_TRUE), F1("fgetc", MAY_BE_FALSE | MAY_BE_STRING), F1("fgets", MAY_BE_FALSE | MAY_BE_STRING), F1("fread", MAY_BE_FALSE | MAY_BE_STRING), F1("fopen", MAY_BE_FALSE | MAY_BE_RESOURCE), - F0("fpassthru", MAY_BE_LONG), - F0("ftruncate", MAY_BE_FALSE | MAY_BE_TRUE), F1("fstat", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_LONG), - F0("fseek", MAY_BE_LONG), - F0("ftell", MAY_BE_FALSE | MAY_BE_LONG), - F0("fflush", MAY_BE_FALSE | MAY_BE_TRUE), - F0("fwrite", MAY_BE_FALSE | MAY_BE_LONG), - F0("fputs", MAY_BE_FALSE | MAY_BE_LONG), - F0("mkdir", MAY_BE_FALSE | MAY_BE_TRUE), - F0("rename", MAY_BE_FALSE | MAY_BE_TRUE), - F0("copy", MAY_BE_FALSE | MAY_BE_TRUE), F1("tempnam", MAY_BE_FALSE | MAY_BE_STRING), F1("tmpfile", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("file", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("file_get_contents", MAY_BE_FALSE | MAY_BE_STRING), - F0("file_put_contents", MAY_BE_FALSE | MAY_BE_LONG), - F0("stream_select", MAY_BE_FALSE | MAY_BE_LONG), F1("stream_context_create", MAY_BE_FALSE | MAY_BE_RESOURCE), F0("stream_context_set_params", MAY_BE_FALSE | MAY_BE_TRUE), F1("stream_context_get_params", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), - F0("stream_context_set_option", MAY_BE_FALSE | MAY_BE_TRUE), FN("stream_context_get_options", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), FN("stream_context_get_default", MAY_BE_FALSE | MAY_BE_RESOURCE), FN("stream_context_set_default", MAY_BE_FALSE | MAY_BE_RESOURCE), FN("stream_filter_prepend", MAY_BE_FALSE | MAY_BE_RESOURCE), FN("stream_filter_append", MAY_BE_FALSE | MAY_BE_RESOURCE), - F0("stream_filter_remove", MAY_BE_FALSE | MAY_BE_TRUE), F1("stream_socket_client", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("stream_socket_server", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("stream_socket_accept", MAY_BE_FALSE | MAY_BE_RESOURCE), F1("stream_socket_get_name", MAY_BE_FALSE | MAY_BE_STRING), F1("stream_socket_recvfrom", MAY_BE_FALSE | MAY_BE_STRING), - F0("stream_socket_sendto", MAY_BE_FALSE | MAY_BE_LONG), - F0("stream_socket_enable_crypto", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG), -#ifdef HAVE_SHUTDOWN - F0("stream_socket_shutdown", MAY_BE_FALSE | MAY_BE_TRUE), -#endif #if HAVE_SOCKETPAIR F1("stream_socket_pair", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_RESOURCE), #endif - F0("stream_copy_to_stream", MAY_BE_FALSE | MAY_BE_LONG), F1("stream_get_contents", MAY_BE_FALSE | MAY_BE_STRING), - F0("stream_supports_lock", MAY_BE_FALSE | MAY_BE_TRUE), F1("fgetcsv", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING), - F0("fputcsv", MAY_BE_FALSE | MAY_BE_LONG), - F0("flock", MAY_BE_FALSE | MAY_BE_TRUE), F1("get_meta_tags", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING), - F0("stream_set_read_buffer", MAY_BE_FALSE | MAY_BE_LONG), - F0("stream_set_write_buffer", MAY_BE_FALSE | MAY_BE_LONG), - F0("set_file_buffer", MAY_BE_FALSE | MAY_BE_LONG), - F0("stream_set_chunk_size", MAY_BE_FALSE | MAY_BE_LONG), - F0("stream_set_blocking", MAY_BE_FALSE | MAY_BE_TRUE), - F0("socket_set_blocking", MAY_BE_FALSE | MAY_BE_TRUE), F1("stream_get_meta_data", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), F1("stream_get_line", MAY_BE_FALSE | MAY_BE_STRING), F1("stream_get_wrappers", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("stream_get_transports", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("stream_resolve_include_path", MAY_BE_FALSE | MAY_BE_STRING), - F0("stream_is_local", MAY_BE_FALSE | MAY_BE_TRUE), F1("get_headers", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY), -#if HAVE_SYS_TIME_H || defined(PHP_WIN32) - F0("stream_set_timeout", MAY_BE_FALSE | MAY_BE_TRUE), - F0("socket_set_timeout", MAY_BE_FALSE | MAY_BE_TRUE), -#endif F1("socket_get_status", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), #if HAVE_REALPATH || defined(ZTS) F1("realpath", MAY_BE_FALSE | MAY_BE_STRING), -#endif -#ifdef HAVE_FNMATCH - F0("fnmatch", MAY_BE_FALSE | MAY_BE_TRUE), #endif F1("fsockopen", MAY_BE_FALSE | MAY_BE_RESOURCE), FN("pfsockopen", MAY_BE_FALSE | MAY_BE_RESOURCE), @@ -503,15 +441,12 @@ static const func_info_t func_infos[] = { FN("array_key_last", MAY_BE_NULL | MAY_BE_LONG | MAY_BE_STRING), F1("pos", UNKNOWN_INFO), F1("assert_options", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_OBJECT | MAY_BE_OBJECT), - F0("version_compare", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG), F1("str_rot13", MAY_BE_STRING), F1("stream_get_filters", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), - F0("stream_filter_register", MAY_BE_FALSE | MAY_BE_TRUE), F1("stream_bucket_make_writeable", MAY_BE_NULL | MAY_BE_OBJECT), F1("stream_bucket_prepend", MAY_BE_FALSE | MAY_BE_OBJECT), F1("stream_bucket_append", MAY_BE_FALSE | MAY_BE_OBJECT), F1("stream_bucket_new", MAY_BE_FALSE | MAY_BE_OBJECT), - F0("output_reset_rewrite_vars", MAY_BE_FALSE), F1("sys_get_temp_dir", MAY_BE_STRING), /* ext/date */ @@ -772,22 +707,16 @@ static const func_info_t func_infos[] = { F1("hash_algos", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("hash_pbkdf2", MAY_BE_STRING), F1("mhash_keygen_s2k", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F0("mhash_get_block_size", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_LONG), F1("mhash_get_hash_name", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F0("mhash_count", MAY_BE_LONG), F1("mhash", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), /* ext/sodium */ - F0("sodium_memzero", MAY_BE_NULL), - F0("sodium_increment", MAY_BE_NULL), - F0("sodium_add", MAY_BE_NULL), - F0("sodium_memcmp", MAY_BE_NULL | MAY_BE_LONG), F1("sodium_crypto_shorthash", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_secretbox", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_secretbox_open", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), F1("sodium_crypto_generichash", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_generichash_init", MAY_BE_NULL | MAY_BE_STRING), - F0("sodium_crypto_generichash_update", MAY_BE_NULL | MAY_BE_TRUE), + F0("sodium_crypto_generichash_update", MAY_BE_TRUE), F1("sodium_crypto_generichash_final", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_box_keypair", MAY_BE_STRING), F1("sodium_crypto_box_seed_keypair", MAY_BE_NULL | MAY_BE_STRING), @@ -804,12 +733,10 @@ static const func_info_t func_infos[] = { F1("sodium_crypto_sign", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_sign_open", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), F1("sodium_crypto_sign_detached", MAY_BE_NULL | MAY_BE_STRING), - F0("sodium_crypto_sign_verify_detached", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE), F1("sodium_crypto_stream", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_stream_xor", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_pwhash", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_pwhash_str", MAY_BE_NULL | MAY_BE_STRING), - F0("sodium_crypto_pwhash_str_verify", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE), F1("sodium_crypto_aead_aes256gcm_encrypt", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_aead_aes256gcm_decrypt", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), F1("sodium_bin2hex", MAY_BE_NULL | MAY_BE_STRING), @@ -822,8 +749,6 @@ static const func_info_t func_infos[] = { F1("sodium_crypto_kx_client_session_keys", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("sodium_crypto_kx_server_session_keys", MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), F1("sodium_crypto_auth", MAY_BE_NULL | MAY_BE_STRING), - F0("sodium_crypto_auth_verify", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE), - F0("sodium_compare", MAY_BE_NULL | MAY_BE_LONG), F1("sodium_crypto_aead_aes256gcm_keygen", MAY_BE_STRING), F1("sodium_crypto_auth_keygen", MAY_BE_STRING), F1("sodium_crypto_generichash_keygen", MAY_BE_STRING), @@ -841,8 +766,6 @@ static const func_info_t func_infos[] = { F1("sodium_crypto_sign_publickey_from_secretkey", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_pwhash_scryptsalsa208sha256", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_pwhash_scryptsalsa208sha256_str", MAY_BE_NULL | MAY_BE_STRING), - F0("sodium_crypto_pwhash_scryptsalsa208sha256_str_verify", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE), - F0("sodium_crypto_aead_aes256gcm_is_available", MAY_BE_FALSE | MAY_BE_TRUE), F1("sodium_crypto_sign_ed25519_sk_to_curve25519", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_sign_ed25519_pk_to_curve25519", MAY_BE_NULL | MAY_BE_STRING), F1("sodium_crypto_aead_chacha20poly1305_encrypt", MAY_BE_NULL | MAY_BE_STRING), diff --git a/ext/standard/basic_functions.stub.php b/ext/standard/basic_functions.stub.php index db6dfb1c74df6..531dc3058f5cb 100755 --- a/ext/standard/basic_functions.stub.php +++ b/ext/standard/basic_functions.stub.php @@ -1192,7 +1192,7 @@ function floatval($value): float {} function boolval($value): bool {} /** @param mixed $value */ -function strval($value): float {} +function strval($value): string {} /** @param mixed $value */ function is_null($value): bool {} diff --git a/ext/standard/basic_functions_arginfo.h b/ext/standard/basic_functions_arginfo.h index d3f0182bdeaab..3ff6549965b8a 100755 --- a/ext/standard/basic_functions_arginfo.h +++ b/ext/standard/basic_functions_arginfo.h @@ -1841,7 +1841,9 @@ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_boolval, 0, 1, _IS_BOOL, 0) ZEND_ARG_INFO(0, value) ZEND_END_ARG_INFO() -#define arginfo_strval arginfo_floatval +ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_strval, 0, 1, IS_STRING, 0) + ZEND_ARG_INFO(0, value) +ZEND_END_ARG_INFO() #define arginfo_is_null arginfo_boolval @@ -1940,9 +1942,7 @@ ZEND_END_ARG_INFO() #define arginfo_debug_zval_dump arginfo_var_dump -ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_serialize, 0, 1, IS_STRING, 0) - ZEND_ARG_INFO(0, value) -ZEND_END_ARG_INFO() +#define arginfo_serialize arginfo_strval ZEND_BEGIN_ARG_INFO_EX(arginfo_unserialize, 0, 0, 1) ZEND_ARG_TYPE_INFO(0, value, IS_STRING, 0)