com php-src: Fixed #74595 - ReflectionMethod::getParameters returns incorrect number of parameters: ext/mysqli/mysqli_fe.c ex t/mysqli/tests/bug74595.phpt ext/mysqli/tests/mys qli_class_mysqli_reflection.phpt

[email protected] (Xinchen Hui)
Newsgroups php.cvs
Message-ID <[email protected]>
Commit:    2e5a747b59b24a44dd95c7b68c1072927123dc0b
Author:    andrewnester <[email protected]>         Mon, 15 May 2017 15:58:30 +0300
Parents:   c1d57186976e75a2a54f7bd167a77e2872cadc6a
Branches:  PHP-7.1 master

Link:       http://git.php.net/?p=php-src.git;a=commitdiff;h=2e5a747b59b24a44dd95c7b68c1072927123dc0b

Log:
Fixed #74595 - ReflectionMethod::getParameters returns incorrect number of parameters

Bugs:
https://bugs.php.net/74595

Changed paths:
  M  ext/mysqli/mysqli_fe.c
  A  ext/mysqli/tests/bug74595.phpt
  M  ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt


Diff:
diff --git a/ext/mysqli/mysqli_fe.c b/ext/mysqli/mysqli_fe.c
index e08ee6d..59354e5 100644
--- a/ext/mysqli/mysqli_fe.c
+++ b/ext/mysqli/mysqli_fe.c
@@ -261,6 +261,17 @@ ZEND_END_ARG_INFO()
 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_query, 0, 0, 2)
 	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
 	ZEND_ARG_INFO(0, query)
+	ZEND_ARG_INFO(0, resultmode)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_multi_query, 0, 0, 1)
+	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
+	ZEND_ARG_INFO(0, query)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_real_query, 0, 0, 1)
+	MYSQLI_ZEND_ARG_OBJ_INFO_LINK()
+	ZEND_ARG_INFO(0, query)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_prepare, 0, 0, 2)
@@ -275,6 +286,19 @@ ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_query, 0, 0, 1)
 	ZEND_ARG_INFO(0, query)
+	ZEND_ARG_INFO(0, resultmode)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_prepare, 0, 0, 1)
+	ZEND_ARG_INFO(0, query)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_multi_query, 0, 0, 1)
+	ZEND_ARG_INFO(0, query)
+ZEND_END_ARG_INFO()
+
+ZEND_BEGIN_ARG_INFO_EX(arginfo_class_mysqli_real_query, 0, 0, 1)
+	ZEND_ARG_INFO(0, query)
 ZEND_END_ARG_INFO()
 
 ZEND_BEGIN_ARG_INFO_EX(arginfo_mysqli_options, 0, 0, 3)
@@ -442,7 +466,7 @@ const zend_function_entry mysqli_functions[] = {
 	PHP_FE(mysqli_insert_id,							arginfo_mysqli_only_link)
 	PHP_FE(mysqli_kill,									arginfo_mysqli_kill)
 	PHP_FE(mysqli_more_results,							arginfo_mysqli_only_link)
-	PHP_FE(mysqli_multi_query, 							arginfo_mysqli_query)
+	PHP_FE(mysqli_multi_query, 							arginfo_mysqli_multi_query)
 	PHP_FE(mysqli_next_result,							arginfo_mysqli_only_link)
 	PHP_FE(mysqli_num_fields,							arginfo_mysqli_only_result)
 	PHP_FE(mysqli_num_rows,								arginfo_mysqli_only_result)
@@ -456,7 +480,7 @@ const zend_function_entry mysqli_functions[] = {
 	PHP_FE(mysqli_query,								arginfo_mysqli_query)
 	PHP_FE(mysqli_real_connect,							arginfo_mysqli_real_connect)
 	PHP_FE(mysqli_real_escape_string,					arginfo_mysqli_real_escape_string)
-	PHP_FE(mysqli_real_query,							arginfo_mysqli_query)
+	PHP_FE(mysqli_real_query,							arginfo_mysqli_real_query)
 #if defined(MYSQLI_USE_MYSQLND)
 	PHP_FE(mysqli_reap_async_query,						arginfo_mysqli_only_link)
 #endif
@@ -542,7 +566,7 @@ const zend_function_entry mysqli_link_methods[] = {
 	PHP_FALIAS(get_warnings, mysqli_get_warnings, arginfo_mysqli_no_params)
 	PHP_FALIAS(init,mysqli_init_method, arginfo_mysqli_no_params)
 	PHP_FALIAS(kill,mysqli_kill, arginfo_class_mysqli_kill)
-	PHP_FALIAS(multi_query, mysqli_multi_query, arginfo_class_mysqli_query)
+	PHP_FALIAS(multi_query, mysqli_multi_query, arginfo_class_mysqli_multi_query)
 	PHP_FALIAS(__construct, mysqli_link_construct, arginfo_mysqli_connect)
 	PHP_FALIAS(more_results, mysqli_more_results, arginfo_mysqli_no_params)
 	PHP_FALIAS(next_result, mysqli_next_result, arginfo_mysqli_no_params)
@@ -551,7 +575,7 @@ const zend_function_entry mysqli_link_methods[] = {
 #if defined(MYSQLI_USE_MYSQLND)
 	ZEND_FENTRY(poll, ZEND_FN(mysqli_poll), arginfo_mysqli_poll, ZEND_ACC_PUBLIC | ZEND_ACC_STATIC)
 #endif
-	PHP_FALIAS(prepare, mysqli_prepare, arginfo_class_mysqli_query)
+	PHP_FALIAS(prepare, mysqli_prepare, arginfo_class_mysqli_prepare)
 	PHP_FALIAS(query, mysqli_query, arginfo_class_mysqli_query)
 	PHP_FALIAS(real_connect, mysqli_real_connect, arginfo_class_mysqli_real_connect)
 	PHP_FALIAS(real_escape_string, mysqli_real_escape_string, arginfo_class_mysqli_real_escape_string)
@@ -559,7 +583,7 @@ const zend_function_entry mysqli_link_methods[] = {
 	PHP_FALIAS(reap_async_query, mysqli_reap_async_query, arginfo_mysqli_no_params)
 #endif
 	PHP_FALIAS(escape_string, mysqli_real_escape_string, arginfo_class_mysqli_real_escape_string)
-	PHP_FALIAS(real_query, mysqli_real_query, arginfo_class_mysqli_query)
+	PHP_FALIAS(real_query, mysqli_real_query, arginfo_class_mysqli_real_query)
 	PHP_FALIAS(release_savepoint, mysqli_release_savepoint, arginfo_class_mysqli_release_savepoint)
 	PHP_FALIAS(rollback, mysqli_rollback, arginfo_class_mysqli_rollback)
 	PHP_FALIAS(savepoint, mysqli_savepoint, arginfo_class_mysqli_savepoint)
@@ -628,7 +652,7 @@ const zend_function_entry mysqli_stmt_methods[] = {
 	PHP_FALIAS(send_long_data, mysqli_stmt_send_long_data, arginfo_class_mysqli_stmt_send_long_data)
 	PHP_FALIAS(free_result, mysqli_stmt_free_result, arginfo_mysqli_no_params)
 	PHP_FALIAS(reset, mysqli_stmt_reset, arginfo_mysqli_no_params)
-	PHP_FALIAS(prepare, mysqli_stmt_prepare, arginfo_class_mysqli_query)
+	PHP_FALIAS(prepare, mysqli_stmt_prepare, arginfo_class_mysqli_prepare)
 	PHP_FALIAS(store_result, mysqli_stmt_store_result, arginfo_mysqli_no_params)
 #if defined(MYSQLI_USE_MYSQLND)
 	PHP_FALIAS(get_result, mysqli_stmt_get_result, arginfo_mysqli_no_params)
diff --git a/ext/mysqli/tests/bug74595.phpt b/ext/mysqli/tests/bug74595.phpt
new file mode 100644
index 0000000..9d017ea
--- /dev/null
+++ b/ext/mysqli/tests/bug74595.phpt
@@ -0,0 +1,25 @@
+--TEST--
+Bug #74595 (ReflectionMethod::getParameters returns incorrect number of parameters)
+--SKIPIF--
+<?php
+require_once('skipif.inc');
+?>
+--FILE--
+<?php
+$class = new ReflectionClass('mysqli');
+$method = $class->getMethod('query');
+var_dump($method->getParameters());
+?>
+--EXPECTF--
+array(2) {
+  [0]=>
+  object(ReflectionParameter)#%d (1) {
+    ["name"]=>
+    string(5) "query"
+  }
+  [1]=>
+  object(ReflectionParameter)#%d (1) {
+    ["name"]=>
+    string(10) "resultmode"
+  }
+}
diff --git a/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt b/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
index 22829ee..f85d689 100644
--- a/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
+++ b/ext/mysqli/tests/mysqli_class_mysqli_reflection.phpt
@@ -732,7 +732,7 @@ isInternal: yes
 isUserDefined: no
 returnsReference: no
 Modifiers: 256
-Number of Parameters: 1
+Number of Parameters: 2
 Number of Required Parameters: 1
 
 Inspecting parameter 'query' of method 'query'
@@ -742,6 +742,13 @@ isPassedByReference: no
 isOptional: no
 isDefaultValueAvailable: no
 
+Inspecting parameter 'resultmode' of method 'query'
+isArray: no
+allowsNull: no
+isPassedByReference: no
+isOptional: yes
+isDefaultValueAvailable: no
+
 Inspecting method 'real_connect'
 isFinal: no
 isAbstract: no
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.