]> granicus.if.org Git - php/commitdiff
Fix F1 type information in OPCache
authorMáté Kocsis <kocsismate@woohoolabs.com>
Wed, 18 Dec 2019 19:44:53 +0000 (20:44 +0100)
committerMáté Kocsis <kocsismate@woohoolabs.com>
Fri, 20 Dec 2019 13:31:30 +0000 (14:31 +0100)
Closes GH-5025

ext/opcache/Optimizer/zend_func_info.c

index 5509741d0bcf19eb06d8029a445a770031a54a19..b6a335d843444b79e0888204f4429190feca40c3 100644 (file)
@@ -106,7 +106,7 @@ static const func_info_t func_infos[] = {
        F1("get_declared_classes",    MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
        F1("get_declared_interfaces", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
        F1("get_defined_functions",   MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ARRAY),
-       F1("get_defined_vars",        MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
+       F1("get_defined_vars",        MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF),
        F1("get_resource_type",       MAY_BE_STRING),
        F1("get_defined_constants",   MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | 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_RESOURCE | MAY_BE_ARRAY_OF_ARRAY),
        F1("debug_backtrace",         MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ARRAY),
@@ -196,11 +196,11 @@ static const func_info_t func_infos[] = {
        F1("str_getcsv",                   MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING),
        FN("str_pad",                      MAY_BE_STRING),
        F1("strchr",                       MAY_BE_FALSE | MAY_BE_STRING),
-       F1("sprintf",                      MAY_BE_FALSE | MAY_BE_STRING),
-       F1("vsprintf",                     MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sprintf",                      MAY_BE_STRING),
+       F1("vsprintf",                     MAY_BE_STRING),
        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),
+       F1("parse_url",                    MAY_BE_NULL | 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),
        F1("urlencode",                    MAY_BE_STRING),
        F1("urldecode",                    MAY_BE_STRING),
        F1("rawurlencode",                 MAY_BE_STRING),
@@ -228,7 +228,7 @@ static const func_info_t func_infos[] = {
 #endif
        F1("base64_decode",                MAY_BE_FALSE | MAY_BE_STRING),
        F1("base64_encode",                MAY_BE_STRING),
-       F1("password_hash",                MAY_BE_NULL | MAY_BE_STRING),
+       F1("password_hash",                MAY_BE_STRING),
        F1("password_get_info",            MAY_BE_NULL | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
        F1("convert_uuencode",             MAY_BE_FALSE | MAY_BE_STRING),
        F1("convert_uudecode",             MAY_BE_FALSE | MAY_BE_STRING),
@@ -273,14 +273,14 @@ static const func_info_t func_infos[] = {
        FN("call_user_method_array",       UNKNOWN_INFO),
        FN("forward_static_call",          UNKNOWN_INFO),
        FN("forward_static_call_array",    UNKNOWN_INFO),
-       F1("serialize",                    MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
+       F1("serialize",                    MAY_BE_STRING),
        FN("unserialize",                  UNKNOWN_INFO),
        F1("var_export",                   MAY_BE_NULL | MAY_BE_STRING),
        F1("print_r",                      MAY_BE_TRUE | MAY_BE_STRING),
        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),
-       F1("highlight_string",             MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
+       F1("highlight_file",               MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
+       F1("show_source",                  MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
+       F1("highlight_string",             MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
        F1("php_strip_whitespace",         MAY_BE_STRING),
        FN("ini_get",                      MAY_BE_FALSE | MAY_BE_STRING),
        F1("ini_get_all",                  MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
@@ -317,7 +317,7 @@ static const func_info_t func_infos[] = {
        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),
-       F1("stream_context_create",        MAY_BE_FALSE | MAY_BE_RESOURCE),
+       F1("stream_context_create",        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),
        FN("stream_context_get_options",   MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY),
@@ -444,8 +444,6 @@ static const func_info_t func_infos[] = {
        F1("str_rot13",                    MAY_BE_STRING),
        F1("stream_get_filters",           MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
        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),
        F1("sys_get_temp_dir",             MAY_BE_STRING),
 
@@ -599,8 +597,8 @@ static const func_info_t func_infos[] = {
        F0("mysqli_warning_count",                                      MAY_BE_NULL | MAY_BE_LONG),
 
        /* ext/curl */
-       F1("curl_init",                             MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_RESOURCE),
-       F1("curl_copy_handle",                      MAY_BE_NULL | MAY_BE_RESOURCE),
+       F1("curl_init",                             MAY_BE_FALSE | MAY_BE_RESOURCE),
+       F1("curl_copy_handle",                      MAY_BE_FALSE | MAY_BE_RESOURCE),
        F1("curl_version",                          MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_ARRAY),
        FN("curl_exec",                             MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
        F1("curl_getinfo",                          MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING | MAY_BE_LONG | MAY_BE_DOUBLE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY),
@@ -621,7 +619,7 @@ static const func_info_t func_infos[] = {
        F1("mb_strtolower",                         MAY_BE_FALSE | MAY_BE_STRING),
        F1("mb_language",                           MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
        F1("mb_internal_encoding",                  MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
-       F1("mb_http_input",                         MAY_BE_FALSE | MAY_BE_STRING),
+       F1("mb_http_input",                         MAY_BE_FALSE | MAY_BE_STRING| MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
        F1("mb_http_output",                        MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
        F1("mb_detect_order",                       MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
        F1("mb_substitute_character",               MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG | MAY_BE_STRING),
@@ -708,41 +706,41 @@ static const func_info_t func_infos[] = {
        F1("hash_pbkdf2",                           MAY_BE_STRING),
        F1("mhash_keygen_s2k",                      MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
        F1("mhash_get_hash_name",                   MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
-       F1("mhash",                                 MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
+       F1("mhash",                                 MAY_BE_FALSE | MAY_BE_FALSE | MAY_BE_STRING),
 
        /* ext/sodium */
-       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),
+       F1("sodium_crypto_shorthash",                           MAY_BE_STRING),
+       F1("sodium_crypto_secretbox",                           MAY_BE_STRING),
+       F1("sodium_crypto_secretbox_open",                      MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_crypto_generichash",                         MAY_BE_STRING),
+       F1("sodium_crypto_generichash_init",            MAY_BE_STRING),
        F0("sodium_crypto_generichash_update",          MAY_BE_TRUE),
-       F1("sodium_crypto_generichash_final",           MAY_BE_NULL | MAY_BE_STRING),
+       F1("sodium_crypto_generichash_final",           MAY_BE_STRING),
        F1("sodium_crypto_box_keypair",                         MAY_BE_STRING),
-       F1("sodium_crypto_box_seed_keypair",            MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_box_secretkey",                       MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_box_publickey",                       MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_box",                                         MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_box_open",                            MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
-       F1("sodium_crypto_box_seal",                            MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_box_seal_open",                       MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_crypto_box_seed_keypair",            MAY_BE_STRING),
+       F1("sodium_crypto_box_secretkey",                       MAY_BE_STRING),
+       F1("sodium_crypto_box_publickey",                       MAY_BE_STRING),
+       F1("sodium_crypto_box",                                         MAY_BE_STRING),
+       F1("sodium_crypto_box_open",                            MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_crypto_box_seal",                            MAY_BE_STRING),
+       F1("sodium_crypto_box_seal_open",                       MAY_BE_FALSE | MAY_BE_STRING),
        F1("sodium_crypto_sign_keypair",                        MAY_BE_STRING),
-       F1("sodium_crypto_sign_seed_keypair",           MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_sign_secretkey",                      MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_sign_publickey",                      MAY_BE_NULL | MAY_BE_STRING),
-       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),
-       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),
-       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),
-       F1("sodium_hex2bin",                                            MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_scalarmult",                          MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_kx_seed_keypair",                     MAY_BE_NULL | MAY_BE_STRING),
+       F1("sodium_crypto_sign_seed_keypair",           MAY_BE_STRING),
+       F1("sodium_crypto_sign_secretkey",                      MAY_BE_STRING),
+       F1("sodium_crypto_sign_publickey",                      MAY_BE_STRING),
+       F1("sodium_crypto_sign",                                        MAY_BE_STRING),
+       F1("sodium_crypto_sign_open",                           MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_crypto_sign_detached",                       MAY_BE_STRING),
+       F1("sodium_crypto_stream",                                      MAY_BE_STRING),
+       F1("sodium_crypto_stream_xor",                          MAY_BE_STRING),
+       F1("sodium_crypto_pwhash",                                      MAY_BE_STRING),
+       F1("sodium_crypto_pwhash_str",                          MAY_BE_STRING),
+       F1("sodium_crypto_aead_aes256gcm_encrypt",      MAY_BE_STRING),
+       F1("sodium_crypto_aead_aes256gcm_decrypt",      MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_bin2hex",                                            MAY_BE_STRING),
+       F1("sodium_hex2bin",                                            MAY_BE_STRING),
+       F1("sodium_crypto_scalarmult",                          MAY_BE_STRING),
+       F1("sodium_crypto_kx_seed_keypair",                     MAY_BE_STRING),
        F1("sodium_crypto_kx_keypair",                          MAY_BE_STRING),
        F1("sodium_crypto_kx_secretkey",                        MAY_BE_NULL | MAY_BE_STRING),
        F1("sodium_crypto_kx_publickey",                        MAY_BE_NULL | MAY_BE_STRING),
@@ -756,23 +754,23 @@ static const func_info_t func_infos[] = {
        F1("sodium_crypto_secretbox_keygen",            MAY_BE_STRING),
        F1("sodium_crypto_shorthash_keygen",            MAY_BE_STRING),
        F1("sodium_crypto_stream_keygen",                       MAY_BE_STRING),
-       F1("sodium_crypto_kdf_derive_from_key",         MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_pad",                                                        MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_unpad",                                                      MAY_BE_NULL | MAY_BE_STRING),
+       F1("sodium_crypto_kdf_derive_from_key",         MAY_BE_STRING),
+       F1("sodium_pad",                                                        MAY_BE_STRING),
+       F1("sodium_unpad",                                                      MAY_BE_STRING),
 
-       F1("sodium_crypto_box_keypair_from_secretkey_and_publickey",    MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_box_publickey_from_secretkey",                                MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_sign_keypair_from_secretkey_and_publickey",   MAY_BE_NULL | MAY_BE_STRING),
-       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),
-       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),
-       F1("sodium_crypto_aead_chacha20poly1305_decrypt",                               MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
-       F1("sodium_crypto_aead_chacha20poly1305_ietf_encrypt",                  MAY_BE_NULL | MAY_BE_STRING),
-       F1("sodium_crypto_aead_chacha20poly1305_ietf_decrypt",                  MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
-       F1("sodium_crypto_aead_xchacha20poly1305_ietf_encrypt",                 MAY_BE_NULL | MAY_BE_STRING),
+       F1("sodium_crypto_box_keypair_from_secretkey_and_publickey",    MAY_BE_STRING),
+       F1("sodium_crypto_box_publickey_from_secretkey",                                MAY_BE_STRING),
+       F1("sodium_crypto_sign_keypair_from_secretkey_and_publickey",   MAY_BE_STRING),
+       F1("sodium_crypto_sign_publickey_from_secretkey",                               MAY_BE_STRING),
+       F1("sodium_crypto_pwhash_scryptsalsa208sha256",                                 MAY_BE_STRING),
+       F1("sodium_crypto_pwhash_scryptsalsa208sha256_str",                             MAY_BE_STRING),
+       F1("sodium_crypto_sign_ed25519_sk_to_curve25519",                               MAY_BE_STRING),
+       F1("sodium_crypto_sign_ed25519_pk_to_curve25519",                               MAY_BE_STRING),
+       F1("sodium_crypto_aead_chacha20poly1305_encrypt",                               MAY_BE_STRING),
+       F1("sodium_crypto_aead_chacha20poly1305_decrypt",                               MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_crypto_aead_chacha20poly1305_ietf_encrypt",                  MAY_BE_STRING),
+       F1("sodium_crypto_aead_chacha20poly1305_ietf_decrypt",                  MAY_BE_FALSE | MAY_BE_STRING),
+       F1("sodium_crypto_aead_xchacha20poly1305_ietf_encrypt",                 MAY_BE_STRING),
        F1("sodium_crypto_aead_xchacha20poly1305_ietf_decrypt",                 MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING),
        F1("sodium_crypto_aead_chacha20poly1305_keygen",                                MAY_BE_STRING),
        F1("sodium_crypto_aead_chacha20poly1305_ietf_keygen",                   MAY_BE_STRING),
@@ -957,16 +955,16 @@ static const func_info_t func_infos[] = {
        F1("imagecolorsforindex",                                       MAY_BE_FALSE | MAY_BE_ARRAY |  MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_LONG),
        F1("imagegetclip",                                                      MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
        F1("imageftbbox",                                                       MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
-       F1("imagefttext",                                                       MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
-       F1("imagettfbbox",                                                      MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
-       F1("imagettftext",                                                      MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
+       F1("imagefttext",                                                       MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
+       F1("imagettfbbox",                                                      MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
+       F1("imagettftext",                                                      MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
        F1("imagecrop",                                                         MAY_BE_FALSE | MAY_BE_OBJECT),
        F1("imagecropauto",                                                     MAY_BE_FALSE | MAY_BE_OBJECT),
        F1("imagescale",                                                        MAY_BE_FALSE | MAY_BE_OBJECT),
        F1("imageaffine",                                                       MAY_BE_FALSE | MAY_BE_OBJECT),
        F1("imageaffinematrixget",                                      MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_DOUBLE),
        F1("imageaffinematrixconcat",                           MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_DOUBLE),
-       F1("imageresolution",                                           MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
+       F1("imageresolution",                                           MAY_BE_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG),
 
        /* ext/spl */
        F1("class_implements",                                          MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING),