Skip to content

Commit f7f5579

Browse files
committed
Fix arg/func info
* mysqli_get_server_info() cannot return null. The underlying API is infallible. * mysqli_select_db() func info is redundant. * mb_detect_order() can only return array|true, not array|false. Also make the func_info.phpt test that is supposed to catch these kinds of issues actually work.
1 parent 5770b66 commit f7f5579

File tree

5 files changed

+13
-15
lines changed

5 files changed

+13
-15
lines changed

ext/mysqli/mysqli.stub.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -609,7 +609,7 @@ function mysqli_get_host_info(mysqli $mysqli_link): string {}
609609

610610
function mysqli_get_proto_info(mysqli $mysqli_link): int {}
611611

612-
function mysqli_get_server_info(mysqli $mysqli_link): ?string {}
612+
function mysqli_get_server_info(mysqli $mysqli_link): string {}
613613

614614
function mysqli_get_server_version(mysqli $mysqli_link): int {}
615615

ext/mysqli/mysqli_api.c

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1403,17 +1403,13 @@ PHP_FUNCTION(mysqli_get_server_info)
14031403
{
14041404
MY_MYSQL *mysql;
14051405
zval *mysql_link = NULL;
1406-
const char *info;
14071406

14081407
if (zend_parse_method_parameters(ZEND_NUM_ARGS(), getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) {
14091408
RETURN_THROWS();
14101409
}
14111410
MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID);
14121411

1413-
info = mysql_get_server_info(mysql->mysql);
1414-
if (info) {
1415-
RETURN_STRING(info);
1416-
}
1412+
RETURN_STRING(mysql_get_server_info(mysql->mysql));
14171413
}
14181414
/* }}} */
14191415

ext/mysqli/mysqli_arginfo.h

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/* This is a generated file, edit the .stub.php file instead.
2-
* Stub hash: 49567a0e831c0a484aaf2c2d213ad24109f2639b */
2+
* Stub hash: cde1bbb449c6adae7a99c7df3e9d290d501e18be */
33

44
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_affected_rows, 0, 1, MAY_BE_LONG|MAY_BE_STRING)
55
ZEND_ARG_OBJ_INFO(0, mysql_link, mysqli, 0)
@@ -162,9 +162,7 @@ ZEND_END_ARG_INFO()
162162

163163
#define arginfo_mysqli_get_proto_info arginfo_mysqli_field_count
164164

165-
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_get_server_info, 0, 1, IS_STRING, 1)
166-
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
167-
ZEND_END_ARG_INFO()
165+
#define arginfo_mysqli_get_server_info arginfo_mysqli_get_host_info
168166

169167
#define arginfo_mysqli_get_server_version arginfo_mysqli_field_count
170168

@@ -175,7 +173,9 @@ ZEND_END_ARG_INFO()
175173
ZEND_BEGIN_ARG_WITH_RETURN_OBJ_TYPE_MASK_EX(arginfo_mysqli_init, 0, 0, mysqli, MAY_BE_FALSE)
176174
ZEND_END_ARG_INFO()
177175

178-
#define arginfo_mysqli_info arginfo_mysqli_get_server_info
176+
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_info, 0, 1, IS_STRING, 1)
177+
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
178+
ZEND_END_ARG_INFO()
179179

180180
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_MASK_EX(arginfo_mysqli_insert_id, 0, 1, MAY_BE_LONG|MAY_BE_STRING)
181181
ZEND_ARG_OBJ_INFO(0, mysqli_link, mysqli, 0)
@@ -377,7 +377,7 @@ ZEND_END_ARG_INFO()
377377

378378
#define arginfo_mysqli_stmt_sqlstate arginfo_mysqli_stmt_error
379379

380-
#define arginfo_mysqli_sqlstate arginfo_mysqli_get_server_info
380+
#define arginfo_mysqli_sqlstate arginfo_mysqli_info
381381

382382
ZEND_BEGIN_ARG_WITH_RETURN_TYPE_INFO_EX(arginfo_mysqli_ssl_set, 0, 6, _IS_BOOL, 0)
383383
ZEND_ARG_OBJ_INFO(0, mysql_link, mysqli, 0)

ext/opcache/Optimizer/zend_func_info.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -489,7 +489,6 @@ static const func_info_t func_infos[] = {
489489
F0("mysqli_stmt_data_seek", MAY_BE_NULL | MAY_BE_FALSE),
490490
F1("mysqli_stmt_insert_id", MAY_BE_LONG | MAY_BE_STRING),
491491
F1("mysqli_stmt_num_rows", MAY_BE_LONG | MAY_BE_STRING),
492-
F0("mysqli_select_db", MAY_BE_FALSE | MAY_BE_TRUE),
493492
F1("mysqli_sqlstate", MAY_BE_NULL | MAY_BE_STRING),
494493
F0("mysqli_ssl_set", MAY_BE_TRUE),
495494
F1("mysqli_stat", MAY_BE_FALSE | MAY_BE_STRING),
@@ -523,7 +522,7 @@ static const func_info_t func_infos[] = {
523522
F1("mb_internal_encoding", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
524523
F1("mb_http_input", MAY_BE_FALSE | MAY_BE_STRING| MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
525524
F1("mb_http_output", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_STRING),
526-
F1("mb_detect_order", MAY_BE_FALSE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
525+
F1("mb_detect_order", MAY_BE_TRUE | MAY_BE_ARRAY | MAY_BE_ARRAY_KEY_LONG | MAY_BE_ARRAY_OF_STRING),
527526
F1("mb_substitute_character", MAY_BE_FALSE | MAY_BE_TRUE | MAY_BE_LONG | MAY_BE_STRING),
528527
F1("mb_output_handler", MAY_BE_STRING),
529528
F1("mb_preferred_mime_name", MAY_BE_FALSE | MAY_BE_STRING),

ext/opcache/tests/func_info.phpt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ $contents = "<?php\n";
1313

1414
$contents .= "function test() {\n";
1515
foreach (get_defined_functions()["internal"] as $function) {
16-
$contents .= " {$function}();\n";
16+
if (in_array($function, ["extract", "compact", "get_defined_vars"])) {
17+
continue;
18+
}
19+
$contents .= " \$result = {$function}();\n";
1720
}
1821
$contents .= "}\n";
1922

0 commit comments

Comments
 (0)