From b1955230694ff6bd924c3f97cb56126926de411d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Thu, 26 Aug 2021 15:18:20 +0200 Subject: [PATCH 1/2] Generate optimizer func info from stubs for ext/gd and ext/pgsql --- Zend/Optimizer/zend_func_info.c | 94 ---------------------------- Zend/Optimizer/zend_func_infos.h | 93 +++++++++++++++++++++++++++ ext/gd/gd.stub.php | 68 ++++++++++++++++++-- ext/gd/gd_arginfo.h | 2 +- ext/pgsql/pgsql.stub.php | 104 ++++++++++++++++++++++++++++--- ext/pgsql/pgsql_arginfo.h | 2 +- 6 files changed, 255 insertions(+), 108 deletions(-) diff --git a/Zend/Optimizer/zend_func_info.c b/Zend/Optimizer/zend_func_info.c index 29dc3b303ca15..06e89806fd60f 100644 --- a/Zend/Optimizer/zend_func_info.c +++ b/Zend/Optimizer/zend_func_info.c @@ -428,103 +428,9 @@ static const func_info_t old_func_infos[] = { F1("mhash_get_hash_name", MAY_BE_FALSE | MAY_BE_STRING), F1("mhash", MAY_BE_FALSE | MAY_BE_FALSE | MAY_BE_STRING), - /* ext/pgsql */ - F1("pg_dbname", MAY_BE_STRING), - F1("pg_options", MAY_BE_STRING), - F1("pg_port", MAY_BE_STRING), - F1("pg_tty", MAY_BE_STRING), - F1("pg_host", MAY_BE_STRING), - F1("pg_version", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_LONG | MAY_BE_ARRAY_OF_NULL), - F1("pg_parameter_status", MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_query", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("pg_query_params", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("pg_prepare", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("pg_execute", MAY_BE_FALSE | MAY_BE_OBJECT), - FN("pg_last_notice", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY ), - F1("pg_field_name", MAY_BE_STRING), - F1("pg_field_type_oid", MAY_BE_LONG | MAY_BE_STRING), - F1("pg_fetch_result", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_fetch_row", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING), - F1("pg_fetch_assoc", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING), - F1("pg_fetch_array", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING), - F1("pg_fetch_object", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("pg_fetch_all", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ARRAY), - F1("pg_fetch_all_columns", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_NULL | MAY_BE_ARRAY_OF_STRING), - F1("pg_last_oid", MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING), - F1("pg_lo_create", MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING), - F1("pg_lo_open", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("pg_lo_read", MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_lo_import", MAY_BE_FALSE | MAY_BE_LONG | MAY_BE_STRING), - F1("pg_copy_to", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING), - F1("pg_escape_string", MAY_BE_STRING), - F1("pg_escape_bytea", MAY_BE_STRING), - F1("pg_unescape_bytea", MAY_BE_STRING), - F1("pg_escape_literal", MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_escape_identifier", MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_result_error", MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_result_error_field", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_STRING), - F1("pg_get_result", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("pg_result_status", MAY_BE_LONG | MAY_BE_STRING), - F1("pg_get_notify", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY), - F1("pg_meta_data", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ARRAY), - F1("pg_convert", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_ANY), - F1("pg_insert", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_OBJECT | MAY_BE_STRING), - F1("pg_update", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), - F1("pg_delete", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING), - F1("pg_select", MAY_BE_FALSE | MAY_BE_STRING | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_ARRAY), - /* ext/filter */ F1("filter_var_array", MAY_BE_NULL | MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_ANY | MAY_BE_ARRAY_OF_REF), - /* ext/gd */ - F1("gd_info", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_STRING | MAY_BE_ARRAY_OF_STRING | MAY_BE_ARRAY_OF_FALSE | MAY_BE_ARRAY_OF_TRUE), - F1("imagecreatetruecolor", MAY_BE_FALSE | MAY_BE_OBJECT), -#ifdef PHP_WIN32 - F1("imagegrabwindow", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagegrabscreen", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif - F1("imagerotate", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagecreate", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagecreatefromstring", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagecreatefromgif", MAY_BE_FALSE | MAY_BE_OBJECT), -#ifdef HAVE_GD_JPG - F1("imagecreatefromjpeg", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif -#ifdef HAVE_GD_AVIF - F1("imagecreatefromavif", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif -#ifdef HAVE_GD_PNG - F1("imagecreatefrompng", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif -#ifdef HAVE_GD_WEBP - F1("imagecreatefromwebp", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif - F1("imagecreatefromxbm", MAY_BE_FALSE | MAY_BE_OBJECT), -#if defined(HAVE_GD_XPM) - F1("imagecreatefromxpm", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif - F1("imagecreatefromwbmp", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagecreatefromgd", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagecreatefromgd2", MAY_BE_FALSE | MAY_BE_OBJECT), - F1("imagecreatefromgd2part", MAY_BE_FALSE | MAY_BE_OBJECT), -#if defined(HAVE_GD_BMP) - F1("imagecreatefrombmp", MAY_BE_FALSE | MAY_BE_OBJECT), -#endif - F0("imagecolorset", MAY_BE_NULL | MAY_BE_FALSE), - F1("imagecolorsforindex", 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_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_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_LONG), - /* ext/spl */ F1("iterator_to_array", MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_ANY | MAY_BE_ARRAY_OF_REF | MAY_BE_ARRAY_OF_ANY), diff --git a/Zend/Optimizer/zend_func_infos.h b/Zend/Optimizer/zend_func_infos.h index 306140e9bba62..67cd91b91d48c 100644 --- a/Zend/Optimizer/zend_func_infos.h +++ b/Zend/Optimizer/zend_func_infos.h @@ -212,7 +212,100 @@ static const func_info_t func_infos[] = { F1("exif_tagname", MAY_BE_STRING|MAY_BE_FALSE), F1("exif_read_data", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_FALSE), F1("exif_thumbnail", MAY_BE_STRING|MAY_BE_FALSE), + F1("pg_dbname", MAY_BE_STRING), + F1("pg_options", MAY_BE_STRING), + F1("pg_port", MAY_BE_STRING), + F1("pg_tty", MAY_BE_STRING), + F1("pg_host", MAY_BE_STRING), + F1("pg_version", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL), + F1("pg_parameter_status", MAY_BE_STRING|MAY_BE_FALSE), + F1("pg_query", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_query_params", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_prepare", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_execute", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_field_name", MAY_BE_STRING), + F1("pg_field_type_oid", MAY_BE_STRING|MAY_BE_LONG), + F1("pg_fetch_result", MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL), + F1("pg_fetch_row", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), + F1("pg_fetch_assoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), + F1("pg_fetch_array", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), + F1("pg_fetch_object", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_fetch_all", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ARRAY), + F1("pg_fetch_all_columns", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL), + F1("pg_last_oid", MAY_BE_STRING|MAY_BE_LONG|MAY_BE_FALSE), + F1("pg_lo_create", MAY_BE_STRING|MAY_BE_LONG|MAY_BE_FALSE), + F1("pg_lo_open", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_lo_read", MAY_BE_STRING|MAY_BE_FALSE), + F1("pg_lo_import", MAY_BE_STRING|MAY_BE_LONG|MAY_BE_FALSE), + F1("pg_copy_to", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_FALSE), + F1("pg_escape_string", MAY_BE_STRING), + F1("pg_escape_bytea", MAY_BE_STRING), + F1("pg_unescape_bytea", MAY_BE_STRING), + F1("pg_escape_literal", MAY_BE_STRING|MAY_BE_FALSE), + F1("pg_escape_identifier", MAY_BE_STRING|MAY_BE_FALSE), + F1("pg_result_error", MAY_BE_STRING|MAY_BE_FALSE), + F1("pg_result_error_field", MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL), + F1("pg_get_result", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("pg_result_status", MAY_BE_STRING|MAY_BE_LONG), + F1("pg_get_notify", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_FALSE), F1("pg_socket", MAY_BE_RESOURCE|MAY_BE_FALSE), + F1("pg_meta_data", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_FALSE), + F1("pg_convert", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_ANY|MAY_BE_FALSE), + F1("pg_insert", MAY_BE_OBJECT|MAY_BE_STRING|MAY_BE_BOOL), + F1("pg_update", MAY_BE_STRING|MAY_BE_BOOL), + F1("pg_delete", MAY_BE_STRING|MAY_BE_BOOL), + F1("pg_select", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ARRAY|MAY_BE_STRING|MAY_BE_FALSE), + F1("gd_info", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_FALSE|MAY_BE_ARRAY_OF_TRUE), + F1("imagecreatetruecolor", MAY_BE_OBJECT|MAY_BE_FALSE), +#if defined(PHP_WIN32) + F1("imagegrabwindow", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif +#if defined(PHP_WIN32) + F1("imagegrabscreen", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif + F1("imagerotate", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagecreate", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagecreatefromstring", MAY_BE_OBJECT|MAY_BE_FALSE), +#if defined(HAVE_GD_AVIF) + F1("imagecreatefromavif", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif + F1("imagecreatefromgif", MAY_BE_OBJECT|MAY_BE_FALSE), +#if defined(HAVE_GD_JPG) + F1("imagecreatefromjpeg", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif +#if defined(HAVE_GD_PNG) + F1("imagecreatefrompng", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif +#if defined(HAVE_GD_WEBP) + F1("imagecreatefromwebp", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif + F1("imagecreatefromxbm", MAY_BE_OBJECT|MAY_BE_FALSE), +#if defined(HAVE_GD_XPM) + F1("imagecreatefromxpm", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif + F1("imagecreatefromwbmp", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagecreatefromgd", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagecreatefromgd2", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagecreatefromgd2part", MAY_BE_OBJECT|MAY_BE_FALSE), +#if defined(HAVE_GD_BMP) + F1("imagecreatefrombmp", MAY_BE_OBJECT|MAY_BE_FALSE), +#endif + F0("imagecolorset", MAY_BE_FALSE|MAY_BE_NULL), + F1("imagecolorsforindex", 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), +#if defined(HAVE_GD_FREETYPE) + F1("imageftbbox", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_LONG|MAY_BE_FALSE), +#endif +#if defined(HAVE_GD_FREETYPE) + F1("imagefttext", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_LONG|MAY_BE_FALSE), +#endif + F1("imagecrop", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagecropauto", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imagescale", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imageaffine", MAY_BE_OBJECT|MAY_BE_FALSE), + F1("imageaffinematrixget", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_DOUBLE|MAY_BE_FALSE), + F1("imageaffinematrixconcat", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_DOUBLE|MAY_BE_FALSE), + F1("imageresolution", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_LONG|MAY_BE_TRUE), FN("preg_replace", MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_NULL), FN("preg_filter", MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_NULL), FN("preg_replace_callback", MAY_BE_STRING|MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_NULL), diff --git a/ext/gd/gd.stub.php b/ext/gd/gd.stub.php index 6436438d2a660..aea5b5ffa0bca 100644 --- a/ext/gd/gd.stub.php +++ b/ext/gd/gd.stub.php @@ -14,12 +14,17 @@ final class GdImage {} */ final class GdFont {} +/** + * @return array + * @refcount 1 + */ function gd_info(): array {} function imageloadfont(string $filename): GdFont|false {} function imagesetstyle(GdImage $image, array $style): bool {} +/** @refcount 1 */ function imagecreatetruecolor(int $width, int $height): GdImage|false {} function imageistruecolor(GdImage $image): bool {} @@ -54,58 +59,75 @@ function imagecopyresampled(GdImage $dst_image, GdImage $src_image, int $dst_x, #ifdef PHP_WIN32 +/** @refcount 1 */ function imagegrabwindow(int $handle, bool $client_area = false): GdImage|false {} +/** @refcount 1 */ function imagegrabscreen(): GdImage|false {} #endif // TODO: $ignore_transparent is ignored??? +/** @refcount 1 */ function imagerotate(GdImage $image, float $angle, int $background_color, bool $ignore_transparent = false): GdImage|false {} function imagesettile(GdImage $image, GdImage $tile): bool {} function imagesetbrush(GdImage $image, GdImage $brush): bool {} +/** @refcount 1 */ function imagecreate(int $width, int $height): GdImage|false {} function imagetypes(): int {} +/** @refcount 1 */ function imagecreatefromstring(string $data): GdImage|false {} #ifdef HAVE_GD_AVIF +/** @refcount 1 */ function imagecreatefromavif(string $filename): GdImage|false {} #endif +/** @refcount 1 */ function imagecreatefromgif(string $filename): GdImage|false {} #ifdef HAVE_GD_JPG +/** @refcount 1 */ function imagecreatefromjpeg(string $filename): GdImage|false {} #endif #ifdef HAVE_GD_PNG +/** @refcount 1 */ function imagecreatefrompng(string $filename): GdImage|false {} #endif #ifdef HAVE_GD_WEBP +/** @refcount 1 */ function imagecreatefromwebp(string $filename): GdImage|false {} #endif +/** @refcount 1 */ function imagecreatefromxbm(string $filename): GdImage|false {} #ifdef HAVE_GD_XPM +/** @refcount 1 */ function imagecreatefromxpm(string $filename): GdImage|false {} #endif +/** @refcount 1 */ function imagecreatefromwbmp(string $filename): GdImage|false {} +/** @refcount 1 */ function imagecreatefromgd(string $filename): GdImage|false {} +/** @refcount 1 */ function imagecreatefromgd2(string $filename): GdImage|false {} +/** @refcount 1 */ function imagecreatefromgd2part(string $filename, int $x, int $y, int $width, int $height): GdImage|false {} #ifdef HAVE_GD_BMP +/** @refcount 1 */ function imagecreatefrombmp(string $filename): GdImage|false {} #endif @@ -168,8 +190,13 @@ function imagecolorresolve(GdImage $image, int $red, int $green, int $blue): int function imagecolorexact(GdImage $image, int $red, int $green, int $blue): int {} +/** @return false|null */ function imagecolorset(GdImage $image, int $color, int $red, int $green, int $blue, int $alpha = 0): ?bool {} +/** + * @return array + * @refcount 1 + */ function imagecolorsforindex(GdImage $image, int $color): array {} function imagegammacorrect(GdImage $image, float $input_gamma, float $output_gamma): bool {} @@ -230,17 +257,35 @@ function imagesy(GdImage $image): int {} function imagesetclip(GdImage $image, int $x1, int $y1, int $x2, int $y2): bool {} +/** + * @return array + * @refcount 1 + */ function imagegetclip(GdImage $image): array {} #ifdef HAVE_GD_FREETYPE +/** + * @return array|false + * @refcount 1 + */ function imageftbbox(float $size, float $angle, string $font_filename, string $string, array $options = []): array|false {} +/** + * @return array|false + * @refcount 1 + */ function imagefttext(GdImage $image, float $size, float $angle, int $x, int $y, int $color, string $font_filename, string $text, array $options = []): array|false {} -/** @alias imageftbbox */ +/** + * @return array|false + * @alias imageftbbox + */ function imagettfbbox(float $size, float $angle, string $font_filename, string $string, array $options = []): array|false {} -/** @alias imagefttext */ +/** + * @return array|false + * @alias imagefttext + */ function imagettftext(GdImage $image, float $size, float $angle, int $x, int $y, int $color, string $font_filename, string $text, array $options = []): array|false {} #endif @@ -253,22 +298,37 @@ function imageflip(GdImage $image, int $mode): bool {} function imageantialias(GdImage $image, bool $enable): bool {} +/** @refcount 1 */ function imagecrop(GdImage $image, array $rectangle): GdImage|false {} +/** @refcount 1 */ function imagecropauto(GdImage $image, int $mode = IMG_CROP_DEFAULT, float $threshold = 0.5, int $color = -1): GdImage|false {} +/** @refcount 1 */ function imagescale(GdImage $image, int $width, int $height = -1, int $mode = IMG_BILINEAR_FIXED): GdImage|false {} +/** @refcount 1 */ function imageaffine(GdImage $image, array $affine, ?array $clip = null): GdImage|false {} -/** @param array|float $options */ +/** + * @param array|float $options + * @refcount 1 + * @return array|false + */ function imageaffinematrixget(int $type, $options): array|false {} +/** + * @return array|false + * @refcount 1 + */ function imageaffinematrixconcat(array $matrix1, array $matrix2): array|false {} function imagegetinterpolation(GdImage $image): int {} function imagesetinterpolation(GdImage $image, int $method = IMG_BILINEAR_FIXED): bool {} +/** + * @return array|true + * @refcount 1 + */ function imageresolution(GdImage $image, ?int $resolution_x = null, ?int $resolution_y = null): array|bool {} - diff --git a/ext/gd/gd_arginfo.h b/ext/gd/gd_arginfo.h index d9384605ea772..320e0f972d5fe 100644 --- a/ext/gd/gd_arginfo.h +++ b/ext/gd/gd_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 301ffe25399211f04e4aa377152c9ca9ec81e1d0 */ + * Stub hash: 722e0701b4ded4747d71433c11b9575e41826be3 */ ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_gd_info, 0, 0, IS_ARRAY, 0) ZEND_END_ARG_INFO() diff --git a/ext/pgsql/pgsql.stub.php b/ext/pgsql/pgsql.stub.php index 16e0f58d0f430..1fd472bd3e7fe 100644 --- a/ext/pgsql/pgsql.stub.php +++ b/ext/pgsql/pgsql.stub.php @@ -40,6 +40,7 @@ function pg_connect_poll(PgSql\Connection $connection): int {} function pg_close(?PgSql\Connection $connection = null): bool {} + /** @refcount 1 */ function pg_dbname(?PgSql\Connection $connection = null): string {} function pg_last_error(?PgSql\Connection $connection = null): string {} @@ -50,22 +51,36 @@ function pg_last_error(?PgSql\Connection $connection = null): string {} */ function pg_errormessage(?PgSql\Connection $connection = null): string {} + /** @refcount 1 */ function pg_options(?PgSql\Connection $connection = null): string {} + /** @refcount 1 */ function pg_port(?PgSql\Connection $connection = null): string {} + /** @refcount 1 */ function pg_tty(?PgSql\Connection $connection = null): string {} + /** @refcount 1 */ function pg_host(?PgSql\Connection $connection = null): string {} + /** + * @return array + * @refcount 1 + */ function pg_version(?PgSql\Connection $connection = null): array {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_parameter_status($connection, string $name = UNKNOWN): string|false {} function pg_ping(?PgSql\Connection $connection = null): bool {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_query($connection, string $query = UNKNOWN): PgSql\Result|false {} /** @@ -77,15 +92,20 @@ function pg_exec($connection, string $query = UNKNOWN): PgSql\Result|false {} /** * @param PgSql\Connection|string $connection * @param string|array $query + * @refcount 1 */ function pg_query_params($connection, $query, array $params = UNKNOWN): PgSql\Result|false {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_prepare($connection, string $statement_name, string $query = UNKNOWN): PgSql\Result|false {} /** * @param PgSql\Connection|string $connection * @param string|array $statement_name + * @refcount 1 */ function pg_execute($connection, $statement_name, array $params = UNKNOWN): PgSql\Result|false {} @@ -117,6 +137,7 @@ function pg_last_notice(PgSql\Connection $connection, int $mode = PGSQL_NOTICE_L function pg_field_table(PgSql\Result $result, int $field, bool $oid_only = false): string|int|false {} + /** @refcount 1 */ function pg_field_name(PgSql\Result $result, int $field): string {} /** @@ -141,6 +162,7 @@ function pg_field_type(PgSql\Result $result, int $field): string {} */ function pg_fieldtype(PgSql\Result $result, int $field): string {} + /** @refcount 1 */ function pg_field_type_oid(PgSql\Result $result, int $field): string|int {} function pg_field_num(PgSql\Result $result, string $field): int {} @@ -151,7 +173,10 @@ function pg_field_num(PgSql\Result $result, string $field): int {} */ function pg_fieldnum(PgSql\Result $result, string $field): int {} - /** @param string|int $row */ + /** + * @param string|int $row + * @refcount 1 + */ function pg_fetch_result(PgSql\Result $result, $row, string|int $field = UNKNOWN): string|false|null {} /** @@ -161,16 +186,37 @@ function pg_fetch_result(PgSql\Result $result, $row, string|int $field = UNKNOWN */ function pg_result(PgSql\Result $result, $row, string|int $field = UNKNOWN): string|false|null {} + /** + * @return array|false + * @refcount 1 + */ function pg_fetch_row(PgSql\Result $result, ?int $row = null, int $mode = PGSQL_NUM): array|false {} + /** + * @return array|false + * @refcount 1 + */ function pg_fetch_assoc(PgSql\Result $result, ?int $row = null): array|false {} + /** + * @return array|false + * @refcount 1 + */ function pg_fetch_array(PgSql\Result $result, ?int $row = null, int $mode = PGSQL_BOTH): array|false {} + /** @refcount 1 */ function pg_fetch_object(PgSql\Result $result, ?int $row = null, string $class = "stdClass", array $constructor_args = []): object|false {} + /** + * @return array + * @refcount 1 + */ function pg_fetch_all(PgSql\Result $result, int $mode = PGSQL_ASSOC): array {} + /** + * @return array + * @refcount 1 + */ function pg_fetch_all_columns(PgSql\Result $result, int $field = 0): array {} function pg_result_seek(PgSql\Result $result, int $row): bool {} @@ -203,6 +249,7 @@ function pg_free_result(PgSql\Result $result): bool {} */ function pg_freeresult(PgSql\Result $result): bool {} + /** @refcount 1 */ function pg_last_oid(PgSql\Result $result): string|int|false {} /** @@ -218,6 +265,7 @@ function pg_untrace(?PgSql\Connection $connection = null): bool {} /** * @param PgSql\Connection $connection * @param string|int $oid + * @refcount 1 */ function pg_lo_create($connection = UNKNOWN, $oid = UNKNOWN): string|int|false {} @@ -246,6 +294,7 @@ function pg_lounlink($connection, $oid = UNKNOWN): bool {} /** * @param PgSql\Connection $connection * @param string|int $oid + * @refcount 1 */ function pg_lo_open($connection, $oid = UNKNOWN, string $mode = UNKNOWN): PgSql\Lob|false {} @@ -265,6 +314,7 @@ function pg_lo_close(PgSql\Lob $lob): bool {} */ function pg_loclose(PgSql\Lob $lob): bool {} + /** @refcount 1 */ function pg_lo_read(PgSql\Lob $lob, int $length = 8192): string|false {} /** @@ -293,6 +343,7 @@ function pg_loreadall(PgSql\Lob $lob): int {} * @param PgSql\Connection|string $connection * @param string|int $filename * @param string|int $oid + * @refcount 1 */ function pg_lo_import($connection, $filename = UNKNOWN, $oid = UNKNOWN): string|int|false {} @@ -353,26 +404,45 @@ function pg_end_copy(?PgSql\Connection $connection = null): bool {} /** @param PgSql\Connection|string $connection */ function pg_put_line($connection, string $query = UNKNOWN): bool {} + /** + * @return array|false + * @refcount 1 + */ function pg_copy_to(PgSql\Connection $connection, string $table_name, string $separator = "\t", string $null_as = "\\\\N"): array|false {} function pg_copy_from(PgSql\Connection $connection, string $table_name, array $rows, string $separator = "\t", string $null_as = "\\\\N"): bool {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_escape_string($connection, string $string = UNKNOWN): string {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_escape_bytea($connection, string $string = UNKNOWN): string {} + /** @refcount 1 */ function pg_unescape_bytea(string $string): string {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_escape_literal($connection, string $string = UNKNOWN): string|false {} - /** @param PgSql\Connection|string $connection */ + /** + * @param PgSql\Connection|string $connection + * @refcount 1 + */ function pg_escape_identifier($connection, string $string = UNKNOWN): string|false {} + /** @refcount 1 */ function pg_result_error(PgSql\Result $result): string|false {} + /** @refcount 1 */ function pg_result_error_field(PgSql\Result $result, int $field_code): string|false|null {} function pg_connection_status(PgSql\Connection $connection): int {} @@ -393,10 +463,13 @@ function pg_send_prepare(PgSql\Connection $connection, string $statement_name, s function pg_send_execute(PgSql\Connection $connection, string $query, array $params): int|bool {} + /** @refcount 1 */ function pg_get_result(PgSql\Connection $connection): PgSql\Result|false {} + /** @refcount 1 */ function pg_result_status(PgSql\Result $result, int $mode = PGSQL_STATUS_LONG): string|int {} + /** @refcount 1 */ function pg_get_notify(PgSql\Connection $connection, int $mode = PGSQL_ASSOC): array|false {} function pg_get_pid(PgSql\Connection $connection): int {} @@ -411,16 +484,31 @@ function pg_consume_input(PgSql\Connection $connection): bool {} function pg_flush(PgSql\Connection $connection): int|bool {} + /** + * @return array|false + * @refcount 1 + */ function pg_meta_data(PgSql\Connection $connection, string $table_name, bool $extended = false): array|false {} + /** + * @return array|false + * @refcount 1 + */ function pg_convert(PgSql\Connection $connection, string $table_name, array $values, int $flags = 0): array|false {} + /** @refcount 1 */ function pg_insert(PgSql\Connection $connection, string $table_name, array $values, int $flags = PGSQL_DML_EXEC): PgSql\Result|string|bool {} + /** @refcount 1 */ function pg_update(PgSql\Connection $connection, string $table_name, array $values, array $conditions, int $flags = PGSQL_DML_EXEC): string|bool {} + /** @refcount 1 */ function pg_delete(PgSql\Connection $connection, string $table_name, array $conditions, int $flags = PGSQL_DML_EXEC): string|bool {} + /** + * @return array|string|false + * @refcount 1 + */ function pg_select(PgSql\Connection $connection, string $table_name, array $conditions, int $flags = PGSQL_DML_EXEC, int $mode = PGSQL_ASSOC): array|string|false {} } diff --git a/ext/pgsql/pgsql_arginfo.h b/ext/pgsql/pgsql_arginfo.h index 6229bb93ca238..ce1c72ff44f97 100644 --- a/ext/pgsql/pgsql_arginfo.h +++ b/ext/pgsql/pgsql_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 09b927fbe51265aa3895c6fadbbe66eb3087d4df */ + * Stub hash: 94b45c6e74b9061277112f75d186dfa45eb9d8b8 */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_pg_connect, 0, 1, PgSql\\Connection, MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, connection_string, IS_STRING, 0) From 60cf32531c8dd2fb32ac1c17e07598a750dc9811 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A1t=C3=A9=20Kocsis?= Date: Thu, 26 Aug 2021 17:11:06 +0200 Subject: [PATCH 2/2] Fix the array key type of pg_fetch_row and pg_fetch_array --- Zend/Optimizer/zend_func_infos.h | 4 ++-- ext/pgsql/pgsql.stub.php | 4 ++-- ext/pgsql/pgsql_arginfo.h | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Zend/Optimizer/zend_func_infos.h b/Zend/Optimizer/zend_func_infos.h index 67cd91b91d48c..a0cca7b61090f 100644 --- a/Zend/Optimizer/zend_func_infos.h +++ b/Zend/Optimizer/zend_func_infos.h @@ -226,9 +226,9 @@ static const func_info_t func_infos[] = { F1("pg_field_name", MAY_BE_STRING), F1("pg_field_type_oid", MAY_BE_STRING|MAY_BE_LONG), F1("pg_fetch_result", MAY_BE_STRING|MAY_BE_FALSE|MAY_BE_NULL), - F1("pg_fetch_row", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), + F1("pg_fetch_row", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), F1("pg_fetch_assoc", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), - F1("pg_fetch_array", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), + F1("pg_fetch_array", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_KEY_STRING|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL|MAY_BE_FALSE), F1("pg_fetch_object", MAY_BE_OBJECT|MAY_BE_FALSE), F1("pg_fetch_all", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_ARRAY), F1("pg_fetch_all_columns", MAY_BE_ARRAY|MAY_BE_ARRAY_KEY_LONG|MAY_BE_ARRAY_OF_STRING|MAY_BE_ARRAY_OF_NULL), diff --git a/ext/pgsql/pgsql.stub.php b/ext/pgsql/pgsql.stub.php index 1fd472bd3e7fe..cbbcac1f8d95a 100644 --- a/ext/pgsql/pgsql.stub.php +++ b/ext/pgsql/pgsql.stub.php @@ -187,7 +187,7 @@ function pg_fetch_result(PgSql\Result $result, $row, string|int $field = UNKNOWN function pg_result(PgSql\Result $result, $row, string|int $field = UNKNOWN): string|false|null {} /** - * @return array|false + * @return array|false * @refcount 1 */ function pg_fetch_row(PgSql\Result $result, ?int $row = null, int $mode = PGSQL_NUM): array|false {} @@ -199,7 +199,7 @@ function pg_fetch_row(PgSql\Result $result, ?int $row = null, int $mode = PGSQL_ function pg_fetch_assoc(PgSql\Result $result, ?int $row = null): array|false {} /** - * @return array|false + * @return array|false * @refcount 1 */ function pg_fetch_array(PgSql\Result $result, ?int $row = null, int $mode = PGSQL_BOTH): array|false {} diff --git a/ext/pgsql/pgsql_arginfo.h b/ext/pgsql/pgsql_arginfo.h index ce1c72ff44f97..b2bb4c3121245 100644 --- a/ext/pgsql/pgsql_arginfo.h +++ b/ext/pgsql/pgsql_arginfo.h @@ -1,5 +1,5 @@ /* This is a generated file, edit the .stub.php file instead. - * Stub hash: 94b45c6e74b9061277112f75d186dfa45eb9d8b8 */ + * Stub hash: fef54d6edd292e005e1db070c5347a8177bc804a */ ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_pg_connect, 0, 1, PgSql\\Connection, MAY_BE_FALSE) ZEND_ARG_TYPE_INFO(0, connection_string, IS_STRING, 0)