From fd3fa9b53c6bc8f34c1c8bf75141f7ee74dc8db0 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 8 Nov 2013 15:06:36 +0800 Subject: Fixed Bug #66043 (Segfault calling bind_param() on mysqli) Although the doc said it is (unsigned int *), but it is ulong* in the libmysql 5.0 's source codes --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 2cda0aa903..6078a5e758 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -384,7 +384,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, /* Changed to my_bool in MySQL 5.1. See MySQL Bug #16144 */ my_bool tmp; #else - uint tmp = 0; + ulong tmp = 0; #endif stmt->result.buf[ofs].type = IS_STRING; /* -- cgit v1.2.1 From c0d060f5c02db168f1de895b41afffbc6e3cacfb Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 3 Jan 2014 11:04:26 +0800 Subject: Bump year --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 6078a5e758..1dbff8712b 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | -- cgit v1.2.1 From 47c902777297ce895aa915c13efdb00881af3669 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 3 Jan 2014 11:06:16 +0800 Subject: Bump year --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index e67aba8da0..9028401595 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | -- cgit v1.2.1 From c081ce628f0d76d44784d7bb8e06428b06142ac0 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 3 Jan 2014 11:08:10 +0800 Subject: Bump year --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index e67aba8da0..9028401595 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -2,7 +2,7 @@ +----------------------------------------------------------------------+ | PHP Version 5 | +----------------------------------------------------------------------+ - | Copyright (c) 1997-2013 The PHP Group | + | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ | This source file is subject to version 3.01 of the PHP license, | | that is bundled with this package in the file LICENSE, and is | -- cgit v1.2.1 From 7807d7d0ce4cbb2c10e7b9d9ae6d9a86a9c43d12 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Wed, 29 Jan 2014 15:27:43 +0200 Subject: Add new INI for rollbacking connections put back into the pconn pool as well a function get the the statistics in easier way than ob_start() and parsing phpinfo(). --- ext/mysqli/mysqli_api.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 9028401595..d6f274b569 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -599,10 +599,20 @@ void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRM #if defined(MYSQLI_USE_MYSQLND) mysqlnd_end_psession(mysql->mysql); #endif - zend_ptr_stack_push(&plist->free_links, mysql->mysql); + if (MyG(rollback_on_cached_plink) && +#if !defined(MYSQLI_USE_MYSQLND) + mysqli_commit_or_rollback_libmysql(mysql->mysql, FALSE, TRANS_COR_NO_OPT, NULL)) +#else + FAIL == mysqlnd_rollback(mysql->mysql, TRANS_COR_NO_OPT, NULL)) +#endif + { + mysqli_close(mysql->mysql, close_type); + } else { + zend_ptr_stack_push(&plist->free_links, mysql->mysql); + MyG(num_inactive_persistent)++; + } MyG(num_active_persistent)--; - MyG(num_inactive_persistent)++; } } mysql->persistent = FALSE; -- cgit v1.2.1 From 1fd53fd2aeccd4503751f124ef92ed273181832b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Schl=C3=BCter?= Date: Sat, 15 Feb 2014 20:05:46 +0100 Subject: Move static functions further up so they are delared efore being used. --- ext/mysqli/mysqli_api.c | 118 ++++++++++++++++++++++++------------------------ 1 file changed, 58 insertions(+), 60 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index d6f274b569..c2d184bd4d 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -34,6 +34,64 @@ #include "php_mysqli_structs.h" #include "mysqli_priv.h" +#if !defined(MYSQLI_USE_MYSQLND) +/* {{{ mysqli_tx_cor_options_to_string */ +static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) +{ + if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); + } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); + } + + if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); + } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { + if (str->len) { + smart_str_appendl(str, ", ", sizeof(", ") - 1); + } + smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); + } + smart_str_0(str); +} +/* }}} */ + + +/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ +static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) +{ + int ret; + smart_str tmp_str = {0, 0, 0}; + mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); + smart_str_0(&tmp_str); + + { + char * commented_name = NULL; + unsigned int commented_name_len = name? spprintf(&commented_name, 0, " /*%s*/", name):0; + char * query; + unsigned int query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), + commented_name? commented_name:"", tmp_str.c? tmp_str.c:""); + smart_str_free(&tmp_str); + + ret = mysql_real_query(conn, query, query_len); + efree(query); + if (commented_name) { + efree(commented_name); + } + } +} +/* }}} */ +#endif + /* {{{ proto mixed mysqli_affected_rows(object link) Get number of affected rows in previous MySQL operation */ PHP_FUNCTION(mysqli_affected_rows) @@ -646,66 +704,6 @@ PHP_FUNCTION(mysqli_close) } /* }}} */ - -#if !defined(MYSQLI_USE_MYSQLND) -/* {{{ mysqli_tx_cor_options_to_string */ -static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) -{ - if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { - if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); - } - smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); - } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { - if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); - } - smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); - } - - if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { - if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); - } - smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); - } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { - if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); - } - smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); - } - smart_str_0(str); -} -/* }}} */ - - -/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ -static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) -{ - int ret; - smart_str tmp_str = {0, 0, 0}; - mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); - smart_str_0(&tmp_str); - - { - char * commented_name = NULL; - unsigned int commented_name_len = name? spprintf(&commented_name, 0, " /*%s*/", name):0; - char * query; - unsigned int query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), - commented_name? commented_name:"", tmp_str.c? tmp_str.c:""); - smart_str_free(&tmp_str); - - ret = mysql_real_query(conn, query, query_len); - efree(query); - if (commented_name) { - efree(commented_name); - } - } -} -/* }}} */ -#endif - - /* {{{ proto bool mysqli_commit(object link) Commit outstanding actions and close transaction */ PHP_FUNCTION(mysqli_commit) -- cgit v1.2.1 From 9137acc7ecdf1542fe6fda5056a0273359682735 Mon Sep 17 00:00:00 2001 From: Remi Collet Date: Thu, 27 Feb 2014 08:45:16 +0100 Subject: Fixed Bug #66762 Segfault in mysqli_stmt::bind_result() when link closed Each new mysqli_stmt now increase the refcount of the link object. So the link is really destroy after all statements. Only implemented with libmysqlclient, as mysqlnd already implement this internally. So, libmysqlclient and mysqlnd have the same behavior. --- ext/mysqli/mysqli_api.c | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 1dbff8712b..0b28a43ba7 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1840,6 +1840,10 @@ PHP_FUNCTION(mysqli_prepare) efree(stmt); RETURN_FALSE; } +#ifndef MYSQLI_USE_MYSQLND + stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); + zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); +#endif mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->ptr = (void *)stmt; @@ -2368,6 +2372,10 @@ PHP_FUNCTION(mysqli_stmt_init) efree(stmt); RETURN_FALSE; } +#ifndef MYSQLI_USE_MYSQLND + stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); + zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); +#endif mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); mysqli_resource->status = MYSQLI_STATUS_INITIALIZED; -- cgit v1.2.1 From d63ed101ee7bb632c54504b1278c79414a75a792 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Wed, 19 Mar 2014 18:32:19 +0200 Subject: Fix problem with mysqli_commt()/mysqli_rollback() --- ext/mysqli/mysqli_api.c | 60 +++++++++++++++++++++++++++++++++++++++---------- 1 file changed, 48 insertions(+), 12 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 719dffff3d..d9e52b3d3a 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -643,24 +643,24 @@ static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); + smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); + smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); } if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); + smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { if (str->len) { - smart_str_appendl(str, ", ", sizeof(", ") - 1); + smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); } @@ -669,6 +669,7 @@ static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str /* }}} */ + /* {{{ proto bool mysqli_commit_or_rollback_libmysql */ static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) { @@ -678,25 +679,60 @@ static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, co smart_str_0(&tmp_str); { - char * commented_name = NULL; - unsigned int commented_name_len = name? spprintf(&commented_name, 0, " /*%s*/", name):0; char * query; - unsigned int query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), - commented_name? commented_name:"", tmp_str.c? tmp_str.c:""); + char * name_esc = NULL; + size_t query_len; + + if (name) { + const char * p_orig = name; + char * p_copy; + p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ + *p_copy++ = ' '; + *p_copy++ = '/'; + *p_copy++ = '*'; + while (1) { + register char v = *p_orig; + if (v == 0) { + break; + } + if ((v >= '0' && v <= '9') || + (v >= 'a' && v <= 'z') || + (v >= 'A' && v <= 'Z') || + v == '-' || + v == '_' || + v == ' ' || + v == '=') + { + *p_copy = v; + } else { + *p_copy = '?'; + } + ++p_orig; + ++p_copy; + } + *p_copy++ = '*'; + *p_copy++ = '/'; + *p_copy++ = 0; + } + + query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), + name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); smart_str_free(&tmp_str); + if (name_esc) { + efree(name_esc); + name_esc = NULL; + } ret = mysql_real_query(conn, query, query_len); efree(query); - if (commented_name) { - efree(commented_name); - } } + return ret; } /* }}} */ #endif -/* {{{ proto bool mysqli_commit(object link) +/* {{{ proto bool mysqli_commit(object link[, int flags [, string name ]]) Commit outstanding actions and close transaction */ PHP_FUNCTION(mysqli_commit) { -- cgit v1.2.1 From 62ab3af12f4eede3e948fced0e50f4fd98ea432d Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Wed, 19 Mar 2014 19:15:04 +0200 Subject: fix compilation error --- ext/mysqli/mysqli_api.c | 190 ++++++++++++++++++++++++------------------------ 1 file changed, 95 insertions(+), 95 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 15fcaae6f3..97f2b766a4 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -33,6 +33,101 @@ #include "ext/standard/php_smart_str.h" #include "php_mysqli_structs.h" #include "mysqli_priv.h" +#if !defined(MYSQLI_USE_MYSQLND) + + +/* {{{ mysqli_tx_cor_options_to_string */ +static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) +{ + if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); + } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); + } + + if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); + } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); + } + smart_str_0(str); +} +/* }}} */ + + + +/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ +static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) +{ + int ret; + smart_str tmp_str = {0, 0, 0}; + mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); + smart_str_0(&tmp_str); + + { + char * query; + char * name_esc = NULL; + size_t query_len; + + if (name) { + const char * p_orig = name; + char * p_copy; + p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ + *p_copy++ = ' '; + *p_copy++ = '/'; + *p_copy++ = '*'; + while (1) { + register char v = *p_orig; + if (v == 0) { + break; + } + if ((v >= '0' && v <= '9') || + (v >= 'a' && v <= 'z') || + (v >= 'A' && v <= 'Z') || + v == '-' || + v == '_' || + v == ' ' || + v == '=') + { + *p_copy = v; + } else { + *p_copy = '?'; + } + ++p_orig; + ++p_copy; + } + *p_copy++ = '*'; + *p_copy++ = '/'; + *p_copy++ = 0; + } + + query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), + name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); + smart_str_free(&tmp_str); + if (name_esc) { + efree(name_esc); + name_esc = NULL; + } + + ret = mysql_real_query(conn, query, query_len); + efree(query); + } + return ret; +} +/* }}} */ +#endif /* {{{ proto mixed mysqli_affected_rows(object link) @@ -648,101 +743,6 @@ PHP_FUNCTION(mysqli_close) /* }}} */ -#if !defined(MYSQLI_USE_MYSQLND) -/* {{{ mysqli_tx_cor_options_to_string */ -static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) -{ - if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); - } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); - } - - if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); - } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); - } - smart_str_0(str); -} -/* }}} */ - - - -/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ -static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) -{ - int ret; - smart_str tmp_str = {0, 0, 0}; - mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); - smart_str_0(&tmp_str); - - { - char * query; - char * name_esc = NULL; - size_t query_len; - - if (name) { - const char * p_orig = name; - char * p_copy; - p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ - *p_copy++ = ' '; - *p_copy++ = '/'; - *p_copy++ = '*'; - while (1) { - register char v = *p_orig; - if (v == 0) { - break; - } - if ((v >= '0' && v <= '9') || - (v >= 'a' && v <= 'z') || - (v >= 'A' && v <= 'Z') || - v == '-' || - v == '_' || - v == ' ' || - v == '=') - { - *p_copy = v; - } else { - *p_copy = '?'; - } - ++p_orig; - ++p_copy; - } - *p_copy++ = '*'; - *p_copy++ = '/'; - *p_copy++ = 0; - } - - query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), - name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); - smart_str_free(&tmp_str); - if (name_esc) { - efree(name_esc); - name_esc = NULL; - } - - ret = mysql_real_query(conn, query, query_len); - efree(query); - } - return ret; -} -/* }}} */ -#endif - - /* {{{ proto bool mysqli_commit(object link[, int flags [, string name ]]) Commit outstanding actions and close transaction */ PHP_FUNCTION(mysqli_commit) -- cgit v1.2.1 From 059bc99d941a9984c88b80562e39421850fb2690 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 20 Mar 2014 12:11:16 +0200 Subject: don't replace with ?, just skip it --- ext/mysqli/mysqli_api.c | 186 ++++++++++++++++++++++++------------------------ 1 file changed, 93 insertions(+), 93 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index d9e52b3d3a..3911202066 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -34,6 +34,99 @@ #include "php_mysqli_structs.h" #include "mysqli_priv.h" + +#if !defined(MYSQLI_USE_MYSQLND) +/* {{{ mysqli_tx_cor_options_to_string */ +static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) +{ + if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); + } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); + } + + if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); + } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { + if (str->len) { + smart_str_appendl(str, " ", sizeof(" ") - 1); + } + smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); + } + smart_str_0(str); +} +/* }}} */ + + + +/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ +static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) +{ + int ret; + smart_str tmp_str = {0, 0, 0}; + mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); + smart_str_0(&tmp_str); + + { + char * query; + char * name_esc = NULL; + size_t query_len; + + if (name) { + const char * p_orig = name; + char * p_copy; + p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ + *p_copy++ = ' '; + *p_copy++ = '/'; + *p_copy++ = '*'; + while (1) { + register char v = *p_orig; + if (v == 0) { + break; + } + if ((v >= '0' && v <= '9') || + (v >= 'a' && v <= 'z') || + (v >= 'A' && v <= 'Z') || + v == '-' || + v == '_' || + v == ' ' || + v == '=') + { + *p_copy++ = v; + } + ++p_orig; + } + *p_copy++ = '*'; + *p_copy++ = '/'; + *p_copy++ = 0; + } + + query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), + name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); + smart_str_free(&tmp_str); + if (name_esc) { + efree(name_esc); + name_esc = NULL; + } + + ret = mysql_real_query(conn, query, query_len); + efree(query); + } + return ret; +} +/* }}} */ +#endif + + /* {{{ proto mixed mysqli_affected_rows(object link) Get number of affected rows in previous MySQL operation */ PHP_FUNCTION(mysqli_affected_rows) @@ -637,99 +730,6 @@ PHP_FUNCTION(mysqli_close) /* }}} */ -#if !defined(MYSQLI_USE_MYSQLND) -/* {{{ mysqli_tx_cor_options_to_string */ -static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) -{ - if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); - } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); - } - - if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); - } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { - if (str->len) { - smart_str_appendl(str, " ", sizeof(" ") - 1); - } - smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); - } - smart_str_0(str); -} -/* }}} */ - - - -/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ -static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) -{ - int ret; - smart_str tmp_str = {0, 0, 0}; - mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); - smart_str_0(&tmp_str); - - { - char * query; - char * name_esc = NULL; - size_t query_len; - - if (name) { - const char * p_orig = name; - char * p_copy; - p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ - *p_copy++ = ' '; - *p_copy++ = '/'; - *p_copy++ = '*'; - while (1) { - register char v = *p_orig; - if (v == 0) { - break; - } - if ((v >= '0' && v <= '9') || - (v >= 'a' && v <= 'z') || - (v >= 'A' && v <= 'Z') || - v == '-' || - v == '_' || - v == ' ' || - v == '=') - { - *p_copy = v; - } else { - *p_copy = '?'; - } - ++p_orig; - ++p_copy; - } - *p_copy++ = '*'; - *p_copy++ = '/'; - *p_copy++ = 0; - } - - query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), - name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); - smart_str_free(&tmp_str); - if (name_esc) { - efree(name_esc); - name_esc = NULL; - } - - ret = mysql_real_query(conn, query, query_len); - efree(query); - } - return ret; -} -/* }}} */ -#endif /* {{{ proto bool mysqli_commit(object link[, int flags [, string name ]]) -- cgit v1.2.1 From 41b4b84ddadee26445b14556b9fdd01758ea3632 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 20 Mar 2014 16:23:40 +0200 Subject: Emit a warning in case of unallowed characters. Fix another place this code is used - reuse --- ext/mysqli/mysqli_api.c | 78 ++++++++++++++++++++++++++++--------------------- 1 file changed, 45 insertions(+), 33 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 3911202066..e3042b18f8 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -67,9 +67,50 @@ static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str /* }}} */ +/* {{{ mysqlnd_escape_string_for_tx_name_in_comment */ +char * +mysqli_escape_string_for_tx_name_in_comment(const char * const name TSRMLS_DC) +{ + char * ret = NULL; + if (name) { + zend_bool warned = FALSE; + const char * p_orig = name; + char * p_copy; + p_copy = ret = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ + *p_copy++ = ' '; + *p_copy++ = '/'; + *p_copy++ = '*'; + while (1) { + register char v = *p_orig; + if (v == 0) { + break; + } + if ((v >= '0' && v <= '9') || + (v >= 'a' && v <= 'z') || + (v >= 'A' && v <= 'Z') || + v == '-' || + v == '_' || + v == ' ' || + v == '=') + { + *p_copy++ = v; + } else if (warned == FALSE) { + php_error_docref(NULL TSRMLS_CC, E_WARNING, "Transaction name truncated. Must be only [0-9A-Za-z\\-_=]+"); + warned = TRUE; + } + ++p_orig; + } + *p_copy++ = '*'; + *p_copy++ = '/'; + *p_copy++ = 0; + } + return ret; +} +/* }}} */ + /* {{{ proto bool mysqli_commit_or_rollback_libmysql */ -static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name) +static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name TSRMLS_DC) { int ret; smart_str tmp_str = {0, 0, 0}; @@ -78,37 +119,8 @@ static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, co { char * query; - char * name_esc = NULL; + char * name_esc = mysqli_escape_string_for_tx_name_in_comment(name TSRMLS_CC); size_t query_len; - - if (name) { - const char * p_orig = name; - char * p_copy; - p_copy = name_esc = emalloc(strlen(name) + 1 + 2 + 2 + 1); /* space, open, close, NullS */ - *p_copy++ = ' '; - *p_copy++ = '/'; - *p_copy++ = '*'; - while (1) { - register char v = *p_orig; - if (v == 0) { - break; - } - if ((v >= '0' && v <= '9') || - (v >= 'a' && v <= 'z') || - (v >= 'A' && v <= 'Z') || - v == '-' || - v == '_' || - v == ' ' || - v == '=') - { - *p_copy++ = v; - } - ++p_orig; - } - *p_copy++ = '*'; - *p_copy++ = '/'; - *p_copy++ = 0; - } query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); @@ -748,7 +760,7 @@ PHP_FUNCTION(mysqli_commit) MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) - if (mysqli_commit_or_rollback_libmysql(mysql->mysql, TRUE, flags, name)) { + if (mysqli_commit_or_rollback_libmysql(mysql->mysql, TRUE, flags, name TSRMLS_CC)) { #else if (FAIL == mysqlnd_commit(mysql->mysql, flags, name)) { #endif @@ -1998,7 +2010,7 @@ PHP_FUNCTION(mysqli_rollback) MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) - if (mysqli_commit_or_rollback_libmysql(mysql->mysql, FALSE, flags, name)) { + if (mysqli_commit_or_rollback_libmysql(mysql->mysql, FALSE, flags, name TSRMLS_CC)) { #else if (FAIL == mysqlnd_rollback(mysql->mysql, flags, name)) { #endif -- cgit v1.2.1 From 113f22550a32479988ff856911e916c16f8dd2e6 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 20 Mar 2014 17:28:49 +0200 Subject: Fixes after merge --- ext/mysqli/mysqli_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 85b6fd9d6f..70bdfb3d59 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -109,7 +109,7 @@ mysqli_escape_string_for_tx_name_in_comment(const char * const name TSRMLS_DC) /* }}} */ -/* {{{ proto bool mysqli_commit_or_rollback_libmysql */ +/* {{{ mysqli_commit_or_rollback_libmysql */ static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name TSRMLS_DC) { int ret; @@ -707,7 +707,7 @@ void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRM if (MyG(rollback_on_cached_plink) && #if !defined(MYSQLI_USE_MYSQLND) - mysqli_commit_or_rollback_libmysql(mysql->mysql, FALSE, TRANS_COR_NO_OPT, NULL)) + mysqli_commit_or_rollback_libmysql(mysql->mysql, FALSE, TRANS_COR_NO_OPT, NULL TSRMLS_CC)) #else FAIL == mysqlnd_rollback(mysql->mysql, TRANS_COR_NO_OPT, NULL)) #endif -- cgit v1.2.1 From 63791d055ad64762c3f63e08ca7ad8ba1f44e0ab Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Thu, 10 Apr 2014 16:44:54 +0300 Subject: New result fetching mode for mysqlnd, which should use less memory but implies more memory copy. The old method is still available and can be used. It stays as default. Choosing the method is through a flag to mysqli_query()/mysqli_real_query() New mode can be forced with an INI setting, for all extensions that support this mode (ext/mysql and mysqli, because PDO due to it's architecture can't support it) The setting is mysqlnd.fetch_data_copy=[0|1] --- ext/mysqli/mysqli_api.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 53639a0670..d14625e0f7 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1477,7 +1477,7 @@ void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS) We create always persistent, as if the user want to connecto to p:somehost, we can't convert the handle then */ - if (!(mysql->mysql = mysql_init(TRUE))) + if (!(mysql->mysql = mysqlnd_init(MYSQLND_CLIENT_KNOWS_RSET_COPY_DATA, TRUE))) #endif { efree(mysql); @@ -2557,7 +2557,7 @@ PHP_FUNCTION(mysqli_stmt_sqlstate) } /* }}} */ -/* {{{ proto object mysqli_store_result(object link) +/* {{{ proto object mysqli_store_result(object link [, flags]) Buffer result set on client */ PHP_FUNCTION(mysqli_store_result) { @@ -2565,13 +2565,19 @@ PHP_FUNCTION(mysqli_store_result) MYSQL_RES *result; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; + long flags = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { + + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &mysql_link, mysqli_link_class_entry, &flags) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); - - if (!(result = mysql_store_result(mysql->mysql))) { +#if MYSQLI_USE_MYSQLND + result = flags & MYSQLI_STORE_RESULT_COPY_DATA? mysqlnd_store_result_ofs(mysql->mysql) : mysqlnd_store_result(mysql->mysql); +#else + result = mysql_store_result(mysql->mysql); +#endif + if (!result) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); RETURN_FALSE; } -- cgit v1.2.1 From 050d7e38ad4163e7fa65e26724d3516ce7b33601 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Tue, 15 Apr 2014 15:40:40 +0400 Subject: Cleanup (1-st round) --- ext/mysqli/mysqli_api.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 9028401595..00a0b93622 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1127,18 +1127,18 @@ PHP_FUNCTION(mysqli_stmt_fetch) /* {{{ php_add_field_properties */ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRMLS_DC) { - add_property_string(value, "name",(field->name ? field->name : ""), 1); - add_property_string(value, "orgname",(field->org_name ? field->org_name : ""), 1); - add_property_string(value, "table",(field->table ? field->table : ""), 1); - add_property_string(value, "orgtable",(field->org_table ? field->org_table : ""), 1); - add_property_string(value, "def",(field->def ? field->def : ""), 1); - add_property_string(value, "db",(field->db ? field->db : ""), 1); + add_property_string(value, "name",(field->name ? field->name : "")); + add_property_string(value, "orgname",(field->org_name ? field->org_name : "")); + add_property_string(value, "table",(field->table ? field->table : "")); + add_property_string(value, "orgtable",(field->org_table ? field->org_table : "")); + add_property_string(value, "def",(field->def ? field->def : "")); + add_property_string(value, "db",(field->db ? field->db : "")); /* FIXME: manually set the catalog to "def" due to bug in * libmysqlclient which does not initialize field->catalog * and in addition, the catalog is always be "def" */ - add_property_string(value, "catalog", "def", 1); + add_property_string(value, "catalog", "def"); add_property_long(value, "max_length", field->max_length); add_property_long(value, "length", field->length); -- cgit v1.2.1 From 2402d6cbbc5e04362b23b183f9129a8db230bcce Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Sun, 11 May 2014 14:53:18 +0800 Subject: Refactor MySQLi (incompleted, only compilable now) --- ext/mysqli/mysqli_api.c | 384 ++++++++++++++++++++---------------------------- 1 file changed, 163 insertions(+), 221 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 766eeda59b..d1767082f9 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -40,24 +40,24 @@ static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { - if (str->len) { + if (str->s) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { - if (str->len) { + if (str->s) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); } if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { - if (str->len) { + if (str->s) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { - if (str->len) { + if (str->s) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); @@ -66,7 +66,6 @@ static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str } /* }}} */ - /* {{{ mysqlnd_escape_string_for_tx_name_in_comment */ char * mysqli_escape_string_for_tx_name_in_comment(const char * const name TSRMLS_DC) @@ -108,22 +107,21 @@ mysqli_escape_string_for_tx_name_in_comment(const char * const name TSRMLS_DC) } /* }}} */ - /* {{{ mysqli_commit_or_rollback_libmysql */ static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name TSRMLS_DC) { int ret; - smart_str tmp_str = {0, 0, 0}; + smart_str tmp_str = {0}; mysqli_tx_cor_options_to_string(conn, &tmp_str, mode); smart_str_0(&tmp_str); { - char * query; - char * name_esc = mysqli_escape_string_for_tx_name_in_comment(name TSRMLS_CC); + char *query; + char *name_esc = mysqli_escape_string_for_tx_name_in_comment(name TSRMLS_CC); size_t query_len; - query_len = spprintf(&query, 0, (commit? "COMMIT%s %s":"ROLLBACK%s %s"), - name_esc? name_esc:"", tmp_str.c? tmp_str.c:""); + query_len = spprintf(&query, 0, + (commit? "COMMIT%s %s":"ROLLBACK%s %s"), name_esc? name_esc:"", tmp_str.s? tmp_str.s->val:""); smart_str_free(&tmp_str); if (name_esc) { efree(name_esc); @@ -138,7 +136,6 @@ static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, co /* }}} */ #endif - /* {{{ proto mixed mysqli_affected_rows(object link) Get number of affected rows in previous MySQL operation */ PHP_FUNCTION(mysqli_affected_rows) @@ -151,7 +148,7 @@ PHP_FUNCTION(mysqli_affected_rows) return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); rc = mysql_affected_rows(mysql->mysql); if (rc == (my_ulonglong) -1) { @@ -161,7 +158,6 @@ PHP_FUNCTION(mysqli_affected_rows) } /* }}} */ - /* {{{ proto bool mysqli_autocommit(object link, bool mode) Turn auto commit on or of */ PHP_FUNCTION(mysqli_autocommit) @@ -173,7 +169,7 @@ PHP_FUNCTION(mysqli_autocommit) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ob", &mysql_link, mysqli_link_class_entry, &automode) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); if (mysql_autocommit(mysql->mysql, (my_bool)automode)) { RETURN_FALSE; @@ -186,7 +182,7 @@ PHP_FUNCTION(mysqli_autocommit) #ifndef MYSQLI_USE_MYSQLND static int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned int num_vars, - zval ***args, unsigned int start, const char * const types TSRMLS_DC) + zval *args, unsigned int start, const char * const types TSRMLS_DC) { int i, ofs; MYSQL_BIND *bind; @@ -207,7 +203,7 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in switch (types[ofs]) { case 'd': /* Double */ bind[ofs].buffer_type = MYSQL_TYPE_DOUBLE; - bind[ofs].buffer = &Z_DVAL_PP(args[i]); + bind[ofs].buffer = &Z_DVAL(args[i]); bind[ofs].is_null = &stmt->param.is_null[ofs]; break; @@ -217,7 +213,7 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in #elif SIZEOF_LONG==4 bind[ofs].buffer_type = MYSQL_TYPE_LONG; #endif - bind[ofs].buffer = &Z_LVAL_PP(args[i]); + bind[ofs].buffer = &Z_LVAL(args[i]); bind[ofs].is_null = &stmt->param.is_null[ofs]; break; @@ -246,13 +242,12 @@ end_1: efree(stmt->param.is_null); } else { stmt->param.var_cnt = num_vars; - stmt->param.vars = (zval **)safe_emalloc(num_vars, sizeof(zval), 0); + stmt->param.vars = safe_emalloc(num_vars, sizeof(zval), 0); for (i = 0; i < num_vars; i++) { - if (bind[i].buffer_type != MYSQL_TYPE_LONG_BLOB) { - Z_ADDREF_P(*args[i+start]); - stmt->param.vars[i] = *args[i+start]; + if (bind[i].buffer_type != MYSQL_TYPE_LONG_BLOB) { + ZVAL_COPY(&stmt->param.vars[i], &args[i+start]); } else { - stmt->param.vars[i] = NULL; + ZVAL_UNDEF(&stmt->param.vars[i]); } } } @@ -263,7 +258,7 @@ end_1: #else static int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned int num_vars, - zval ***args, unsigned int start, const char * const types TSRMLS_DC) + zval *args, unsigned int start, const char * const types TSRMLS_DC) { unsigned int i; MYSQLND_PARAM_BIND *params; @@ -303,7 +298,7 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in mysqlnd_stmt_free_param_bind(stmt->stmt, params); goto end; } - params[i].zv = *(args[i + start]); + ZVAL_COPY_VALUE(¶ms[i].zv, &args[i + start]); params[i].type = type; } ret = mysqlnd_stmt_bind_param(stmt->stmt, params); @@ -318,7 +313,7 @@ end: Bind variables to a prepared statement as parameters */ PHP_FUNCTION(mysqli_stmt_bind_param) { - zval ***args; + zval *args; int argc = ZEND_NUM_ARGS(); int num_vars; int start = 2; @@ -339,7 +334,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); num_vars = argc - 1; if (getThis()) { @@ -364,7 +359,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) RETURN_FALSE; } - args = (zval ***)safe_emalloc(argc, sizeof(zval **), 0); + args = safe_emalloc(argc, sizeof(zval), 0); if (zend_get_parameters_array_ex(argc, args) == FAILURE) { zend_wrong_param_count(TSRMLS_C); @@ -386,7 +381,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) do_alloca, free_alloca */ static int -mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, unsigned int start TSRMLS_DC) +mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, unsigned int start TSRMLS_DC) { MYSQL_BIND *bind; int i, ofs; @@ -415,7 +410,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, switch (col_type) { case MYSQL_TYPE_DOUBLE: case MYSQL_TYPE_FLOAT: - convert_to_double_ex(args[i]); + convert_to_double_ex(&args[i]); stmt->result.buf[ofs].type = IS_DOUBLE; stmt->result.buf[ofs].buflen = sizeof(double); @@ -444,7 +439,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, case MYSQL_TYPE_LONG: case MYSQL_TYPE_INT24: case MYSQL_TYPE_YEAR: - convert_to_long_ex(args[i]); + convert_to_long_ex(&args[i]); stmt->result.buf[ofs].type = IS_LONG; /* don't set stmt->result.buf[ofs].buflen to 0, we used ecalloc */ stmt->result.buf[ofs].val = (char *)emalloc(sizeof(int)); @@ -546,11 +541,10 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, efree(stmt->result.buf); } else { stmt->result.var_cnt = var_cnt; - stmt->result.vars = (zval **)safe_emalloc((var_cnt), sizeof(zval), 0); + stmt->result.vars = safe_emalloc((var_cnt), sizeof(zval), 0); for (i = start; i < var_cnt+start; i++) { ofs = i-start; - Z_ADDREF_PP(args[i]); - stmt->result.vars[ofs] = *args[i]; + ZVAL_COPY(&stmt->result.vars[ofs], &args[i]); } } efree(bind); @@ -559,13 +553,13 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, } #else static int -mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, unsigned int start TSRMLS_DC) +mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, unsigned int start TSRMLS_DC) { unsigned int i; - MYSQLND_RESULT_BIND * params = mysqlnd_stmt_alloc_result_bind(stmt->stmt); + MYSQLND_RESULT_BIND *params = mysqlnd_stmt_alloc_result_bind(stmt->stmt); if (params) { for (i = 0; i < (argc - start); i++) { - params[i].zv = *(args[i + start]); + ZVAL_COPY_VALUE(¶ms[i].zv, &args[i + start]); } return mysqlnd_stmt_bind_result(stmt->stmt, params); } @@ -578,7 +572,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval ***args, unsigned int argc, Bind variables to a prepared statement for result storage */ PHP_FUNCTION(mysqli_stmt_bind_result) { - zval ***args; + zval *args; int argc = ZEND_NUM_ARGS(); int start = 1; ulong rc; @@ -593,7 +587,7 @@ PHP_FUNCTION(mysqli_stmt_bind_result) return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (argc < (getThis() ? 1 : 2)) { WRONG_PARAM_COUNT; @@ -604,7 +598,7 @@ PHP_FUNCTION(mysqli_stmt_bind_result) RETURN_FALSE; } - args = (zval ***)safe_emalloc(argc, sizeof(zval **), 0); + args = safe_emalloc(argc, sizeof(zval), 0); if (zend_get_parameters_array_ex(argc, args) == FAILURE) { efree(args); @@ -635,7 +629,7 @@ PHP_FUNCTION(mysqli_change_user) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osss", &mysql_link, mysqli_link_class_entry, &user, &user_len, &password, &password_len, &dbname, &dbname_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET) old_charset = mysql->mysql->charset; @@ -678,15 +672,14 @@ PHP_FUNCTION(mysqli_character_set_name) return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); cs_name = mysql_character_set_name(mysql->mysql); if (cs_name) { - RETURN_STRING(cs_name, 1); + RETURN_STRING(cs_name); } } /* }}} */ - /* {{{ php_mysqli_close */ void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRMLS_DC) { @@ -697,9 +690,9 @@ void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRM if (!mysql->persistent) { mysqli_close(mysql->mysql, close_type); } else { - zend_rsrc_list_entry *le; - if (zend_hash_find(&EG(persistent_list), mysql->hash_key, strlen(mysql->hash_key) + 1, (void **)&le) == SUCCESS) { - if (Z_TYPE_P(le) == php_le_pmysqli()) { + zend_resource *le; + if ((le = zend_hash_find_ptr(&EG(persistent_list), mysql->hash_key)) != NULL) { + if (le->type == php_le_pmysqli()) { mysqli_plist_entry *plist = (mysqli_plist_entry *) le->ptr; #if defined(MYSQLI_USE_MYSQLND) mysqlnd_end_psession(mysql->mysql); @@ -728,7 +721,6 @@ void php_mysqli_close(MY_MYSQL * mysql, int close_type, int resource_status TSRM } /* }}} */ - /* {{{ proto bool mysqli_close(object link) Close connection */ PHP_FUNCTION(mysqli_close) @@ -740,18 +732,17 @@ PHP_FUNCTION(mysqli_close) return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); - php_mysqli_close(mysql, MYSQLI_CLOSE_EXPLICIT, ((MYSQLI_RESOURCE *)((mysqli_object *)zend_object_store_get_object(mysql_link TSRMLS_CC))->ptr)->status TSRMLS_CC); - ((MYSQLI_RESOURCE *)((mysqli_object *)zend_object_store_get_object(mysql_link TSRMLS_CC))->ptr)->status = MYSQLI_STATUS_UNKNOWN; + php_mysqli_close(mysql, MYSQLI_CLOSE_EXPLICIT, ((MYSQLI_RESOURCE *)(Z_MYSQLI_P(mysql_link))->ptr)->status TSRMLS_CC); + ((MYSQLI_RESOURCE *)(Z_MYSQLI_P(mysql_link))->ptr)->status = MYSQLI_STATUS_UNKNOWN; - MYSQLI_CLEAR_RESOURCE(&mysql_link); + MYSQLI_CLEAR_RESOURCE(mysql_link); efree(mysql); RETURN_TRUE; } /* }}} */ - /* {{{ proto bool mysqli_commit(object link[, int flags [, string name ]]) Commit outstanding actions and close transaction */ PHP_FUNCTION(mysqli_commit) @@ -765,7 +756,7 @@ PHP_FUNCTION(mysqli_commit) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) if (mysqli_commit_or_rollback_libmysql(mysql->mysql, TRUE, flags, name TSRMLS_CC)) { @@ -790,7 +781,7 @@ PHP_FUNCTION(mysqli_data_seek) return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (mysqli_result_is_unbuffered(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT"); @@ -822,7 +813,6 @@ PHP_FUNCTION(mysqli_debug) } /* }}} */ - /* {{{ proto bool mysqli_dump_debug_info(object link) */ PHP_FUNCTION(mysqli_dump_debug_info) @@ -833,7 +823,7 @@ PHP_FUNCTION(mysqli_dump_debug_info) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_BOOL(!mysql_dump_debug_info(mysql->mysql)) } @@ -849,7 +839,7 @@ PHP_FUNCTION(mysqli_errno) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_errno(mysql->mysql)); } /* }}} */ @@ -865,10 +855,10 @@ PHP_FUNCTION(mysqli_error) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); err = mysql_error(mysql->mysql); if (err) { - RETURN_STRING(err, 1); + RETURN_STRING(err); } } /* }}} */ @@ -897,56 +887,31 @@ PHP_FUNCTION(mysqli_stmt_execute) zval *mysql_stmt; #ifndef MYSQLI_USE_MYSQLND unsigned int i; - zval **copies = NULL; #endif if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); #ifndef MYSQLI_USE_MYSQLND - if (stmt->param.var_cnt) { - int j; - for (i = 0; i < stmt->param.var_cnt; i++) { - for (j = i + 1; j < stmt->param.var_cnt; j++) { - /* Oops, someone binding the same variable - clone */ - if (stmt->param.vars[j] == stmt->param.vars[i] && stmt->param.vars[i]) { - php_mysqli_stmt_copy_it(&copies, stmt->param.vars[i], stmt->param.var_cnt, i); - break; - } - } - } - } for (i = 0; i < stmt->param.var_cnt; i++) { - if (stmt->param.vars[i]) { - if ( !(stmt->param.is_null[i] = (stmt->param.vars[i]->type == IS_NULL)) ) { - zval *the_var = copies && copies[i]? copies[i]:stmt->param.vars[i]; + if (!Z_ISUNDEF(stmt->param.vars[i])) { + if (!(stmt->param.is_null[i] = (Z_ISNULL(stmt->param.vars[i])))) { + zval *the_var = &stmt->param.vars[i]; switch (stmt->stmt->params[i].buffer_type) { case MYSQL_TYPE_VAR_STRING: - if (the_var == stmt->param.vars[i] && Z_TYPE_P(stmt->param.vars[i]) != IS_STRING) { - php_mysqli_stmt_copy_it(&copies, stmt->param.vars[i], stmt->param.var_cnt, i); - the_var = copies[i]; - } - convert_to_string_ex(&the_var); + convert_to_string_ex(the_var); stmt->stmt->params[i].buffer = Z_STRVAL_P(the_var); stmt->stmt->params[i].buffer_length = Z_STRLEN_P(the_var); break; case MYSQL_TYPE_DOUBLE: - if (the_var == stmt->param.vars[i] && Z_TYPE_P(stmt->param.vars[i]) != IS_DOUBLE) { - php_mysqli_stmt_copy_it(&copies, stmt->param.vars[i], stmt->param.var_cnt, i); - the_var = copies[i]; - } - convert_to_double_ex(&the_var); + convert_to_double_ex(the_var); stmt->stmt->params[i].buffer = &Z_DVAL_P(the_var); break; case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONG: - if (the_var == stmt->param.vars[i] && Z_TYPE_P(stmt->param.vars[i]) != IS_LONG) { - php_mysqli_stmt_copy_it(&copies, stmt->param.vars[i], stmt->param.var_cnt, i); - the_var = copies[i]; - } - convert_to_long_ex(&the_var); + convert_to_long_ex(the_var); stmt->stmt->params[i].buffer = &Z_LVAL_P(the_var); break; default: @@ -964,17 +929,6 @@ PHP_FUNCTION(mysqli_stmt_execute) RETVAL_TRUE; } -#ifndef MYSQLI_USE_MYSQLND - if (copies) { - for (i = 0; i < stmt->param.var_cnt; i++) { - if (copies[i]) { - zval_ptr_dtor(&copies[i]); - } - } - efree(copies); - } -#endif - if (MyG(report_mode) & MYSQLI_REPORT_INDEX) { php_mysqli_report_index(stmt->query, mysqli_stmt_server_status(stmt->stmt) TSRMLS_CC); } @@ -997,7 +951,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); /* reset buffers */ for (i = 0; i < stmt->result.var_cnt; i++) { @@ -1018,8 +972,8 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) to leak probably. zval_dtor() will handle also Unicode/Non-unicode mode. */ /* Even if the string is of length zero there is one byte alloced so efree() in all cases */ - if (Z_TYPE_P(stmt->result.vars[i]) == IS_STRING) { - STR_FREE(stmt->result.vars[i]->value.str.val); + if (Z_TYPE(stmt->result.vars[i]) == IS_STRING) { + zval_ptr_dtor(&stmt->result.vars[i]); } if (!stmt->result.is_null[i]) { switch (stmt->result.buf[i].type) { @@ -1033,7 +987,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) if (uval > INT_MAX) { char *tmp, *p; int j=10; - tmp= emalloc(11); + tmp = emalloc(11); p= &tmp[9]; do { *p-- = (uval % 10) + 48; @@ -1041,19 +995,20 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) } while (--j > 0); tmp[10]= '\0'; /* unsigned int > INT_MAX is 10 digits - ALWAYS */ - ZVAL_STRINGL(stmt->result.vars[i], tmp, 10, 0); + ZVAL_STRINGL(&stmt->result.vars[i], tmp, 10); + efree(tmp); break; } #endif } if (stmt->stmt->fields[i].flags & UNSIGNED_FLAG) { - ZVAL_LONG(stmt->result.vars[i], *(unsigned int *)stmt->result.buf[i].val); + ZVAL_LONG(&stmt->result.vars[i], *(unsigned int *)stmt->result.buf[i].val); } else { - ZVAL_LONG(stmt->result.vars[i], *(int *)stmt->result.buf[i].val); + ZVAL_LONG(&stmt->result.vars[i], *(int *)stmt->result.buf[i].val); } break; case IS_DOUBLE: - ZVAL_DOUBLE(stmt->result.vars[i], *(double *)stmt->result.buf[i].val); + ZVAL_DOUBLE(&stmt->result.vars[i], *(double *)stmt->result.buf[i].val); break; case IS_STRING: if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_LONGLONG @@ -1093,22 +1048,22 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) * use MYSQLI_LL_SPEC. */ snprintf(tmp, sizeof(tmp), (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval); - ZVAL_STRING(stmt->result.vars[i], tmp, 1); + ZVAL_STRING(&stmt->result.vars[i], tmp); } else { - ZVAL_LONG(stmt->result.vars[i], llval); + ZVAL_LONG(&stmt->result.vars[i], llval); } } else { #if defined(MYSQL_DATA_TRUNCATED) && MYSQL_VERSION_ID > 50002 if (ret == MYSQL_DATA_TRUNCATED && *(stmt->stmt->bind[i].error) != 0) { /* result was truncated */ - ZVAL_STRINGL(stmt->result.vars[i], stmt->result.buf[i].val, - stmt->stmt->bind[i].buffer_length, 1); + ZVAL_STRINGL(&stmt->result.vars[i], stmt->result.buf[i].val, + stmt->stmt->bind[i].buffer_length); } else { #else { #endif - ZVAL_STRINGL(stmt->result.vars[i], stmt->result.buf[i].val, - stmt->result.buf[i].output_len, 1); + ZVAL_STRINGL(&stmt->result.vars[i], stmt->result.buf[i].val, + stmt->result.buf[i].output_len); } } break; @@ -1116,7 +1071,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) break; } } else { - ZVAL_NULL(stmt->result.vars[i]); + ZVAL_NULL(&stmt->result.vars[i]); } } } else { @@ -1154,7 +1109,7 @@ void mysqli_stmt_fetch_mysqlnd(INTERNAL_FUNCTION_PARAMETERS) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (FAIL == mysqlnd_stmt_fetch(stmt->stmt, &fetched_anything)) { RETURN_BOOL(FALSE); @@ -1167,7 +1122,6 @@ void mysqli_stmt_fetch_mysqlnd(INTERNAL_FUNCTION_PARAMETERS) #endif /* }}} */ - /* {{{ proto mixed mysqli_stmt_fetch(object stmt) U Fetch results from a prepared statement into the bound variables */ PHP_FUNCTION(mysqli_stmt_fetch) @@ -1217,7 +1171,7 @@ PHP_FUNCTION(mysqli_fetch_field) return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (!(field = mysql_fetch_field(result))) { RETURN_FALSE; @@ -1234,7 +1188,7 @@ PHP_FUNCTION(mysqli_fetch_fields) { MYSQL_RES *result; zval *mysql_result; - zval *obj; + zval obj; unsigned int i; @@ -1242,18 +1196,17 @@ PHP_FUNCTION(mysqli_fetch_fields) return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); array_init(return_value); for (i = 0; i < mysql_num_fields(result); i++) { const MYSQL_FIELD *field = mysql_fetch_field_direct(result, i); - MAKE_STD_ZVAL(obj); - object_init(obj); + object_init(&obj); - php_add_field_properties(obj, field TSRMLS_CC); - add_index_zval(return_value, i, obj); + php_add_field_properties(&obj, field TSRMLS_CC); + add_index_zval(return_value, i, &obj); } } /* }}} */ @@ -1271,7 +1224,7 @@ PHP_FUNCTION(mysqli_fetch_field_direct) return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (offset < 0 || offset >= (long) mysql_num_fields(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Field offset is invalid for resultset"); @@ -1300,7 +1253,7 @@ PHP_FUNCTION(mysqli_fetch_lengths) return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (!(ret = mysql_fetch_lengths(result))) { RETURN_FALSE; @@ -1333,7 +1286,7 @@ PHP_FUNCTION(mysqli_field_count) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_field_count(mysql->mysql)); } @@ -1351,7 +1304,7 @@ PHP_FUNCTION(mysqli_field_seek) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (fieldnr < 0 || fieldnr >= mysql_num_fields(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid field offset"); @@ -1373,7 +1326,7 @@ PHP_FUNCTION(mysqli_field_tell) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); RETURN_LONG(mysql_field_tell(result)); } @@ -1389,10 +1342,10 @@ PHP_FUNCTION(mysqli_free_result) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); mysqli_free_result(result, FALSE); - MYSQLI_CLEAR_RESOURCE(&mysql_result); + MYSQLI_CLEAR_RESOURCE(mysql_result); } /* }}} */ @@ -1402,7 +1355,7 @@ PHP_FUNCTION(mysqli_get_client_info) { const char * info = mysql_get_client_info(); if (info) { - RETURN_STRING(info, 1); + RETURN_STRING(info); } } /* }}} */ @@ -1425,11 +1378,11 @@ PHP_FUNCTION(mysqli_get_host_info) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) - RETURN_STRING((mysql->mysql->host_info) ? mysql->mysql->host_info : "", 1); + RETURN_STRING((mysql->mysql->host_info) ? mysql->mysql->host_info : ""); #else - RETURN_STRING((mysql->mysql->data->host_info) ? mysql->mysql->data->host_info : "", 1); + RETURN_STRING((mysql->mysql->data->host_info) ? mysql->mysql->data->host_info : ""); #endif } /* }}} */ @@ -1444,7 +1397,7 @@ PHP_FUNCTION(mysqli_get_proto_info) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_get_proto_info(mysql->mysql)); } /* }}} */ @@ -1460,11 +1413,11 @@ PHP_FUNCTION(mysqli_get_server_info) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); info = mysql_get_server_info(mysql->mysql); if (info) { - RETURN_STRING(info, 1); + RETURN_STRING(info); } } /* }}} */ @@ -1479,7 +1432,7 @@ PHP_FUNCTION(mysqli_get_server_version) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_get_server_version(mysql->mysql)); } @@ -1496,23 +1449,22 @@ PHP_FUNCTION(mysqli_info) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); info = mysql_info(mysql->mysql); if (info) { - RETURN_STRING(info, 1); + RETURN_STRING(info); } } /* }}} */ - /* {{{ php_mysqli_init() */ void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS) { MYSQLI_RESOURCE *mysqli_resource; MY_MYSQL *mysql; - if (getThis() && ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr) { + if (getThis() && (Z_MYSQLI_P(getThis()))->ptr) { return; } @@ -1539,12 +1491,11 @@ void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS) if (!getThis() || !instanceof_function(Z_OBJCE_P(getThis()), mysqli_link_class_entry TSRMLS_CC)) { MYSQLI_RETURN_RESOURCE(mysqli_resource, mysqli_link_class_entry); } else { - ((mysqli_object *) zend_object_store_get_object(getThis() TSRMLS_CC))->ptr = mysqli_resource; + (Z_MYSQLI_P(getThis()))->ptr = mysqli_resource; } } /* }}} */ - /* {{{ proto resource mysqli_init(void) Initialize mysqli and return a resource for use with mysql_real_connect */ PHP_FUNCTION(mysqli_init) @@ -1564,7 +1515,7 @@ PHP_FUNCTION(mysqli_insert_id) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); rc = mysql_insert_id(mysql->mysql); MYSQLI_RETURN_LONG_LONG(rc) } @@ -1581,7 +1532,7 @@ PHP_FUNCTION(mysqli_kill) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); if (processid <= 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "processid should have positive value"); @@ -1606,7 +1557,7 @@ PHP_FUNCTION(mysqli_more_results) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_BOOL(mysql_more_results(mysql->mysql)); } @@ -1621,7 +1572,7 @@ PHP_FUNCTION(mysqli_next_result) { if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); if (!mysql_more_results(mysql->mysql)) { php_error_docref(NULL TSRMLS_CC, E_STRICT, "There is no next result set. " @@ -1644,13 +1595,12 @@ PHP_FUNCTION(mysqli_stmt_more_results) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); RETURN_BOOL(mysqlnd_stmt_more_results(stmt->stmt)); } /* }}} */ - /* {{{ proto bool mysqli_stmt_next_result(object link) read next result from multi_query */ PHP_FUNCTION(mysqli_stmt_next_result) { @@ -1660,7 +1610,7 @@ PHP_FUNCTION(mysqli_stmt_next_result) { if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (!mysqlnd_stmt_more_results(stmt->stmt)) { php_error_docref(NULL TSRMLS_CC, E_STRICT, "There is no next result set. " @@ -1673,7 +1623,6 @@ PHP_FUNCTION(mysqli_stmt_next_result) { /* }}} */ #endif - /* {{{ proto int mysqli_num_fields(object result) Get number of fields in result */ PHP_FUNCTION(mysqli_num_fields) @@ -1684,7 +1633,7 @@ PHP_FUNCTION(mysqli_num_fields) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); RETURN_LONG(mysql_num_fields(result)); } @@ -1700,7 +1649,7 @@ PHP_FUNCTION(mysqli_num_rows) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, &mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); if (mysqli_result_is_unbuffered_and_not_everything_is_fetched(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT"); @@ -1781,23 +1730,22 @@ static int mysqli_options_get_option_zval_type(int option) } /* }}} */ - /* {{{ proto bool mysqli_options(object link, int flags, mixed values) Set options */ PHP_FUNCTION(mysqli_options) { MY_MYSQL *mysql; zval *mysql_link = NULL; - zval **mysql_value; + zval *mysql_value; long mysql_option; unsigned int l_value; long ret; int expected_type; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OlZ", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Olz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); #if PHP_API_VERSION < 20100412 if ((PG(open_basedir) && PG(open_basedir)[0] != '\0') || PG(safe_mode)) { @@ -1809,7 +1757,7 @@ PHP_FUNCTION(mysqli_options) } } expected_type = mysqli_options_get_option_zval_type(mysql_option); - if (expected_type != Z_TYPE_PP(mysql_value)) { + if (expected_type != Z_TYPE_P(mysql_value)) { switch (expected_type) { case IS_STRING: convert_to_string_ex(mysql_value); @@ -1823,10 +1771,10 @@ PHP_FUNCTION(mysqli_options) } switch (expected_type) { case IS_STRING: - ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_PP(mysql_value)); + ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_P(mysql_value)); break; case IS_LONG: - l_value = Z_LVAL_PP(mysql_value); + l_value = Z_LVAL_P(mysql_value); ret = mysql_options(mysql->mysql, mysql_option, (char *)&l_value); break; default: @@ -1838,7 +1786,6 @@ PHP_FUNCTION(mysqli_options) } /* }}} */ - /* {{{ proto bool mysqli_ping(object link) Ping a server connection or reconnect if there is no connection */ PHP_FUNCTION(mysqli_ping) @@ -1850,7 +1797,7 @@ PHP_FUNCTION(mysqli_ping) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); rc = mysql_ping(mysql->mysql); MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); @@ -1872,7 +1819,7 @@ PHP_FUNCTION(mysqli_prepare) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os",&mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) if (mysql->mysql->status == MYSQL_STATUS_GET_RESULT) { @@ -1926,8 +1873,7 @@ PHP_FUNCTION(mysqli_prepare) RETURN_FALSE; } #ifndef MYSQLI_USE_MYSQLND - stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); - zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); + ZVAL_COPY(&stmt->link_handle, mysql_link); #endif mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); @@ -1939,7 +1885,6 @@ PHP_FUNCTION(mysqli_prepare) } /* }}} */ - /* {{{ proto bool mysqli_real_connect(object link [,string hostname [,string username [,string passwd [,string dbname [,int port [,string socket [,int flags]]]]]]]) Open a connection to a mysql server */ PHP_FUNCTION(mysqli_real_connect) @@ -1948,7 +1893,6 @@ PHP_FUNCTION(mysqli_real_connect) } /* }}} */ - /* {{{ proto bool mysqli_real_query(object link, string query) Binary-safe version of mysql_query() */ PHP_FUNCTION(mysqli_real_query) @@ -1961,7 +1905,7 @@ PHP_FUNCTION(mysqli_real_query) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); MYSQLI_DISABLE_MQ; /* disable multi statements/queries */ @@ -1985,23 +1929,23 @@ PHP_FUNCTION(mysqli_real_query) PHP_FUNCTION(mysqli_real_escape_string) { MY_MYSQL *mysql; zval *mysql_link = NULL; - char *escapestr, *newstr; - int escapestr_len, newstr_len; + char *escapestr; + int escapestr_len; + zend_string *newstr; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &escapestr, &escapestr_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - newstr = safe_emalloc(2, escapestr_len, 1); - newstr_len = mysql_real_escape_string(mysql->mysql, newstr, escapestr, escapestr_len); - newstr = erealloc(newstr, newstr_len + 1); + newstr = STR_ALLOC(2 * escapestr_len, 0); + newstr->len = mysql_real_escape_string(mysql->mysql, newstr->val, escapestr, escapestr_len); + newstr = STR_REALLOC(newstr, newstr->len, 0); - RETURN_STRINGL(newstr, newstr_len, 0); + RETURN_STR(newstr); } /* }}} */ - /* {{{ proto bool mysqli_rollback(object link) Undo actions from current transaction */ PHP_FUNCTION(mysqli_rollback) @@ -2015,7 +1959,7 @@ PHP_FUNCTION(mysqli_rollback) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) if (mysqli_commit_or_rollback_libmysql(mysql->mysql, FALSE, flags, name TSRMLS_CC)) { @@ -2041,7 +1985,7 @@ PHP_FUNCTION(mysqli_stmt_send_long_data) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ols", &mysql_stmt, mysqli_stmt_class_entry, ¶m_nr, &data, &data_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (param_nr < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Invalid parameter number"); @@ -2054,7 +1998,6 @@ PHP_FUNCTION(mysqli_stmt_send_long_data) } /* }}} */ - /* {{{ proto mixed mysqli_stmt_affected_rows(object stmt) Return the number of rows affected in the last query for the given link */ PHP_FUNCTION(mysqli_stmt_affected_rows) @@ -2066,7 +2009,7 @@ PHP_FUNCTION(mysqli_stmt_affected_rows) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_affected_rows(stmt->stmt); if (rc == (my_ulonglong) -1) { @@ -2086,12 +2029,12 @@ PHP_FUNCTION(mysqli_stmt_close) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); mysqli_stmt_close(stmt->stmt, FALSE); stmt->stmt = NULL; php_clear_stmt_bind(stmt TSRMLS_CC); - MYSQLI_CLEAR_RESOURCE(&mysql_stmt); + MYSQLI_CLEAR_RESOURCE(mysql_stmt); RETURN_TRUE; } /* }}} */ @@ -2112,7 +2055,7 @@ PHP_FUNCTION(mysqli_stmt_data_seek) RETURN_FALSE; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); mysql_stmt_data_seek(stmt->stmt, offset); } @@ -2128,7 +2071,7 @@ PHP_FUNCTION(mysqli_stmt_field_count) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_stmt_field_count(stmt->stmt)); } @@ -2145,7 +2088,7 @@ PHP_FUNCTION(mysqli_stmt_free_result) return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); mysql_stmt_free_result(stmt->stmt); } @@ -2162,7 +2105,7 @@ PHP_FUNCTION(mysqli_stmt_insert_id) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_insert_id(stmt->stmt); MYSQLI_RETURN_LONG_LONG(rc) } @@ -2178,7 +2121,7 @@ PHP_FUNCTION(mysqli_stmt_param_count) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_stmt_param_count(stmt->stmt)); } @@ -2195,7 +2138,7 @@ PHP_FUNCTION(mysqli_stmt_reset) return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (mysql_stmt_reset(stmt->stmt)) { RETURN_FALSE; @@ -2216,7 +2159,7 @@ PHP_FUNCTION(mysqli_stmt_num_rows) return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_num_rows(stmt->stmt); MYSQLI_RETURN_LONG_LONG(rc) @@ -2235,7 +2178,7 @@ PHP_FUNCTION(mysqli_select_db) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &dbname, &dbname_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); if (mysql_select_db(mysql->mysql, dbname)) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); @@ -2256,10 +2199,10 @@ PHP_FUNCTION(mysqli_sqlstate) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); state = mysql_sqlstate(mysql->mysql); if (state) { - RETURN_STRING(state, 1); + RETURN_STRING(state); } } /* }}} */ @@ -2276,7 +2219,7 @@ PHP_FUNCTION(mysqli_ssl_set) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osssss", &mysql_link, mysqli_link_class_entry, &ssl_parm[0], &ssl_parm_len[0], &ssl_parm[1], &ssl_parm_len[1], &ssl_parm[2], &ssl_parm_len[2], &ssl_parm[3], &ssl_parm_len[3], &ssl_parm[4], &ssl_parm_len[4]) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); for (i = 0; i < 5; i++) { if (!ssl_parm_len[i]) { @@ -2304,16 +2247,17 @@ PHP_FUNCTION(mysqli_stat) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) if ((stat = (char *)mysql_stat(mysql->mysql))) { - RETURN_STRING(stat, 1); + RETURN_STRING(stat); #else if (mysqlnd_stat(mysql->mysql, &stat, &stat_len) == PASS) { - RETURN_STRINGL(stat, stat_len, 0); + RETVAL_STRINGL(stat, stat_len); + efree(stat); #endif } else { RETURN_FALSE; @@ -2333,7 +2277,7 @@ PHP_FUNCTION(mysqli_refresh) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &options) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); #ifdef MYSQLI_USE_MYSQLND RETURN_BOOL(!mysql_refresh(mysql->mysql, (uint8_t) options)); #else @@ -2359,7 +2303,7 @@ PHP_FUNCTION(mysqli_stmt_attr_set) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode_in) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (mode_in < 0) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "mode should be non-negative, %ld passed", mode_in); @@ -2402,7 +2346,7 @@ PHP_FUNCTION(mysqli_stmt_attr_get) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if ((rc = mysql_stmt_attr_get(stmt->stmt, attr, &value))) { RETURN_FALSE; @@ -2426,7 +2370,7 @@ PHP_FUNCTION(mysqli_stmt_errno) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED); RETURN_LONG(mysql_stmt_errno(stmt->stmt)); } @@ -2443,11 +2387,11 @@ PHP_FUNCTION(mysqli_stmt_error) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED); err = mysql_stmt_error(stmt->stmt); if (err) { - RETURN_STRING(err, 1); + RETURN_STRING(err); } } /* }}} */ @@ -2465,7 +2409,7 @@ PHP_FUNCTION(mysqli_stmt_init) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O",&mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); stmt = (MY_STMT *)ecalloc(1,sizeof(MY_STMT)); @@ -2474,8 +2418,7 @@ PHP_FUNCTION(mysqli_stmt_init) RETURN_FALSE; } #ifndef MYSQLI_USE_MYSQLND - stmt->link_handle = Z_OBJ_HANDLE(*mysql_link); - zend_objects_store_add_ref_by_handle(stmt->link_handle TSRMLS_CC); + ZVAL_COPY(&stmt->link_handle, mysql_link); #endif mysqli_resource = (MYSQLI_RESOURCE *)ecalloc (1, sizeof(MYSQLI_RESOURCE)); @@ -2498,14 +2441,14 @@ PHP_FUNCTION(mysqli_stmt_prepare) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_stmt, mysqli_stmt_class_entry, &query, &query_len) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_INITIALIZED); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED); if (mysql_stmt_prepare(stmt->stmt, query, query_len)) { MYSQLI_REPORT_STMT_ERROR(stmt->stmt); RETURN_FALSE; } /* change status */ - MYSQLI_SET_STATUS(&mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_SET_STATUS(mysql_stmt, MYSQLI_STATUS_VALID); RETURN_TRUE; } /* }}} */ @@ -2522,7 +2465,7 @@ PHP_FUNCTION(mysqli_stmt_result_metadata) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (!(result = mysql_stmt_result_metadata(stmt->stmt))){ MYSQLI_REPORT_STMT_ERROR(stmt->stmt); @@ -2546,7 +2489,7 @@ PHP_FUNCTION(mysqli_stmt_store_result) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); #if !defined(MYSQLI_USE_MYSQLND) { @@ -2596,11 +2539,11 @@ PHP_FUNCTION(mysqli_stmt_sqlstate) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_stmt, mysqli_stmt_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_STMT(stmt, &mysql_stmt, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); state = mysql_stmt_sqlstate(stmt->stmt); if (state) { - RETURN_STRING(state, 1); + RETURN_STRING(state); } } /* }}} */ @@ -2619,7 +2562,7 @@ PHP_FUNCTION(mysqli_store_result) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &mysql_link, mysqli_link_class_entry, &flags) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); #if MYSQLI_USE_MYSQLND result = flags & MYSQLI_STORE_RESULT_COPY_DATA? mysqlnd_store_result_ofs(mysql->mysql) : mysqlnd_store_result(mysql->mysql); #else @@ -2640,7 +2583,6 @@ PHP_FUNCTION(mysqli_store_result) } /* }}} */ - /* {{{ proto int mysqli_thread_id(object link) Return the current thread ID */ PHP_FUNCTION(mysqli_thread_id) @@ -2651,7 +2593,7 @@ PHP_FUNCTION(mysqli_thread_id) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_LONG((long) mysql_thread_id(mysql->mysql)); } @@ -2677,7 +2619,7 @@ PHP_FUNCTION(mysqli_use_result) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); if (!(result = mysql_use_result(mysql->mysql))) { MYSQLI_REPORT_MYSQL_ERROR(mysql->mysql); @@ -2704,7 +2646,7 @@ PHP_FUNCTION(mysqli_warning_count) if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; } - MYSQLI_FETCH_RESOURCE_CONN(mysql, &mysql_link, MYSQLI_STATUS_VALID); + MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); RETURN_LONG(mysql_warning_count(mysql->mysql)); } -- cgit v1.2.1 From 53b930475f3f3e6b6dd727db5f1c565effc04324 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Sun, 11 May 2014 16:05:14 +0800 Subject: Various bug fixed --- ext/mysqli/mysqli_api.c | 77 +++++++++++++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 32 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index d1767082f9..59d03e6579 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -198,12 +198,17 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in ofs = 0; for (i = start; i < argc; i++) { - + zval *param; + if (Z_ISREF(args[i])) { + param = Z_REFVAL(args[i]); + } else { + param = &args[i]; + } /* set specified type */ switch (types[ofs]) { case 'd': /* Double */ bind[ofs].buffer_type = MYSQL_TYPE_DOUBLE; - bind[ofs].buffer = &Z_DVAL(args[i]); + bind[ofs].buffer = &Z_DVAL_P(param); bind[ofs].is_null = &stmt->param.is_null[ofs]; break; @@ -213,7 +218,7 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in #elif SIZEOF_LONG==4 bind[ofs].buffer_type = MYSQL_TYPE_LONG; #endif - bind[ofs].buffer = &Z_LVAL(args[i]); + bind[ofs].buffer = &Z_LVAL_P(param); bind[ofs].is_null = &stmt->param.is_null[ofs]; break; @@ -397,7 +402,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un bind = (MYSQL_BIND *)ecalloc(var_cnt, sizeof(MYSQL_BIND)); { int size; - char *p= emalloc(size= var_cnt * (sizeof(char) + sizeof(VAR_BUFFER))); + char *p = emalloc(size= var_cnt * (sizeof(char) + sizeof(VAR_BUFFER))); stmt->result.buf = (VAR_BUFFER *) p; stmt->result.is_null = p + var_cnt * sizeof(VAR_BUFFER); memset(p, 0, size); @@ -410,7 +415,6 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un switch (col_type) { case MYSQL_TYPE_DOUBLE: case MYSQL_TYPE_FLOAT: - convert_to_double_ex(&args[i]); stmt->result.buf[ofs].type = IS_DOUBLE; stmt->result.buf[ofs].buflen = sizeof(double); @@ -439,7 +443,6 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un case MYSQL_TYPE_LONG: case MYSQL_TYPE_INT24: case MYSQL_TYPE_YEAR: - convert_to_long_ex(&args[i]); stmt->result.buf[ofs].type = IS_LONG; /* don't set stmt->result.buf[ofs].buflen to 0, we used ecalloc */ stmt->result.buf[ofs].val = (char *)emalloc(sizeof(int)); @@ -863,10 +866,11 @@ PHP_FUNCTION(mysqli_error) } /* }}} */ +#if 0 #ifndef MYSQLI_USE_MYSQLND /* {{{ php_mysqli_stmt_copy_it */ static void -php_mysqli_stmt_copy_it(zval *** copies, zval *original, uint param_count, uint current) +php_mysqli_stmt_copy_it(zval *copies, zval *original, uint param_count, uint current) { if (!*copies) { *copies = ecalloc(param_count, sizeof(zval *)); @@ -878,6 +882,7 @@ php_mysqli_stmt_copy_it(zval *** copies, zval *original, uint param_count, uint } /* }}} */ #endif +#endif /* {{{ proto bool mysqli_stmt_execute(object stmt) Execute a prepared statement */ @@ -897,22 +902,27 @@ PHP_FUNCTION(mysqli_stmt_execute) #ifndef MYSQLI_USE_MYSQLND for (i = 0; i < stmt->param.var_cnt; i++) { if (!Z_ISUNDEF(stmt->param.vars[i])) { - if (!(stmt->param.is_null[i] = (Z_ISNULL(stmt->param.vars[i])))) { - zval *the_var = &stmt->param.vars[i]; + zval *param; + if (Z_ISREF(stmt->param.vars[i])) { + param = Z_REFVAL(stmt->param.vars[i]); + } else { + param = &stmt->param.vars[i]; + } + if (!(stmt->param.is_null[i] = (Z_ISNULL_P(param)))) { switch (stmt->stmt->params[i].buffer_type) { case MYSQL_TYPE_VAR_STRING: - convert_to_string_ex(the_var); - stmt->stmt->params[i].buffer = Z_STRVAL_P(the_var); - stmt->stmt->params[i].buffer_length = Z_STRLEN_P(the_var); + convert_to_string_ex(param); + stmt->stmt->params[i].buffer = Z_STRVAL_P(param); + stmt->stmt->params[i].buffer_length = Z_STRLEN_P(param); break; case MYSQL_TYPE_DOUBLE: - convert_to_double_ex(the_var); - stmt->stmt->params[i].buffer = &Z_DVAL_P(the_var); + convert_to_double_ex(param); + stmt->stmt->params[i].buffer = &Z_DVAL_P(param); break; case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONG: - convert_to_long_ex(the_var); - stmt->stmt->params[i].buffer = &Z_LVAL_P(the_var); + convert_to_long_ex(param); + stmt->stmt->params[i].buffer = &Z_LVAL_P(param); break; default: break; @@ -966,15 +976,20 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) if (!ret) { #endif for (i = 0; i < stmt->result.var_cnt; i++) { + zval *result; + /* it must be a reference, isn't it? */ + if (Z_ISREF(stmt->result.vars[i])) { + result = Z_REFVAL(stmt->result.vars[i]); + } else { + result = &stmt->result.vars[i]; + } /* QQ: Isn't it quite better to call zval_dtor(). What if the user has assigned a resource, or an array to the bound variable? We are going to leak probably. zval_dtor() will handle also Unicode/Non-unicode mode. */ /* Even if the string is of length zero there is one byte alloced so efree() in all cases */ - if (Z_TYPE(stmt->result.vars[i]) == IS_STRING) { - zval_ptr_dtor(&stmt->result.vars[i]); - } + zval_ptr_dtor(result); if (!stmt->result.is_null[i]) { switch (stmt->result.buf[i].type) { case IS_LONG: @@ -986,7 +1001,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) #if SIZEOF_LONG==4 if (uval > INT_MAX) { char *tmp, *p; - int j=10; + int j = 10; tmp = emalloc(11); p= &tmp[9]; do { @@ -995,20 +1010,20 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) } while (--j > 0); tmp[10]= '\0'; /* unsigned int > INT_MAX is 10 digits - ALWAYS */ - ZVAL_STRINGL(&stmt->result.vars[i], tmp, 10); + ZVAL_STRINGL(result, tmp, 10); efree(tmp); break; } #endif } if (stmt->stmt->fields[i].flags & UNSIGNED_FLAG) { - ZVAL_LONG(&stmt->result.vars[i], *(unsigned int *)stmt->result.buf[i].val); + ZVAL_LONG(result, *(unsigned int *)stmt->result.buf[i].val); } else { - ZVAL_LONG(&stmt->result.vars[i], *(int *)stmt->result.buf[i].val); + ZVAL_LONG(result, *(int *)stmt->result.buf[i].val); } break; case IS_DOUBLE: - ZVAL_DOUBLE(&stmt->result.vars[i], *(double *)stmt->result.buf[i].val); + ZVAL_DOUBLE(result, *(double *)stmt->result.buf[i].val); break; case IS_STRING: if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_LONGLONG @@ -1016,7 +1031,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) || stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_BIT #endif ) { - my_bool uns= (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? 1:0; + my_bool uns = (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? 1:0; #if MYSQL_VERSION_ID > 50002 if (stmt->stmt->bind[i].buffer_type == MYSQL_TYPE_BIT) { switch (stmt->result.buf[i].output_len) { @@ -1048,22 +1063,20 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) * use MYSQLI_LL_SPEC. */ snprintf(tmp, sizeof(tmp), (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval); - ZVAL_STRING(&stmt->result.vars[i], tmp); + ZVAL_STRING(result, tmp); } else { - ZVAL_LONG(&stmt->result.vars[i], llval); + ZVAL_LONG(result, llval); } } else { #if defined(MYSQL_DATA_TRUNCATED) && MYSQL_VERSION_ID > 50002 if (ret == MYSQL_DATA_TRUNCATED && *(stmt->stmt->bind[i].error) != 0) { /* result was truncated */ - ZVAL_STRINGL(&stmt->result.vars[i], stmt->result.buf[i].val, - stmt->stmt->bind[i].buffer_length); + ZVAL_STRINGL(result, stmt->result.buf[i].val, stmt->stmt->bind[i].buffer_length); } else { #else { #endif - ZVAL_STRINGL(&stmt->result.vars[i], stmt->result.buf[i].val, - stmt->result.buf[i].output_len); + ZVAL_STRINGL(result, stmt->result.buf[i].val, stmt->result.buf[i].output_len); } } break; @@ -1071,7 +1084,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) break; } } else { - ZVAL_NULL(&stmt->result.vars[i]); + ZVAL_NULL(result); } } } else { -- cgit v1.2.1 From c057b3f63d58d1f1cdf7a0bd654ef9a55b26bd2a Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Sun, 11 May 2014 19:37:48 +0800 Subject: Finish refactoring of MySQLi a few tests failed due to knew issue, I will disscuss with dmitry later --- ext/mysqli/mysqli_api.c | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 59d03e6579..6c38cfff44 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -866,24 +866,6 @@ PHP_FUNCTION(mysqli_error) } /* }}} */ -#if 0 -#ifndef MYSQLI_USE_MYSQLND -/* {{{ php_mysqli_stmt_copy_it */ -static void -php_mysqli_stmt_copy_it(zval *copies, zval *original, uint param_count, uint current) -{ - if (!*copies) { - *copies = ecalloc(param_count, sizeof(zval *)); - } - MAKE_STD_ZVAL((*copies)[current]); - *(*copies)[current] = *original; - Z_SET_REFCOUNT_P((*copies)[current], 1); - zval_copy_ctor((*copies)[current]); -} -/* }}} */ -#endif -#endif - /* {{{ proto bool mysqli_stmt_execute(object stmt) Execute a prepared statement */ PHP_FUNCTION(mysqli_stmt_execute) @@ -900,6 +882,22 @@ PHP_FUNCTION(mysqli_stmt_execute) MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); #ifndef MYSQLI_USE_MYSQLND + if (stmt->param.var_cnt) { + int j; + for (i = 0; i < stmt->param.var_cnt; i++) { + if (!Z_ISREF(stmt->param.vars[i])) { + continue; + } + for (j = i + 1; j < stmt->param.var_cnt; j++) { + /* Oops, someone binding the same variable - clone */ + if (Z_TYPE(stmt->param.vars[j]) == Z_TYPE(stmt->param.vars[i]) && + Z_REFVAL(stmt->param.vars[j]) == Z_REFVAL(stmt->param.vars[i])) { + SEPARATE_ZVAL(&stmt->param.vars[j]); + break; + } + } + } + } for (i = 0; i < stmt->param.var_cnt; i++) { if (!Z_ISUNDEF(stmt->param.vars[i])) { zval *param; -- cgit v1.2.1 From a4a1fc5552b8821990a881f742d4b453861aa3f1 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Sat, 17 May 2014 10:28:54 +0800 Subject: Fixed signed --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 6c38cfff44..45456d2a36 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1310,7 +1310,7 @@ PHP_FUNCTION(mysqli_field_seek) { MYSQL_RES *result; zval *mysql_result; - unsigned long fieldnr; + long fieldnr; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { return; -- cgit v1.2.1 From 90cad3de2f4a4969d56ada43791e40ab64208ed9 Mon Sep 17 00:00:00 2001 From: Andrey Hristov Date: Tue, 20 May 2014 14:50:50 +0300 Subject: Add one more check to skip getting into code that will do nothing --- ext/mysqli/mysqli_api.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 45456d2a36..1b2c7998b2 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -40,24 +40,24 @@ static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { - if (str->s) { + if (str->s && str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND CHAIN", sizeof("AND CHAIN") - 1); } else if (mode & TRANS_COR_AND_NO_CHAIN && !(mode & TRANS_COR_AND_CHAIN)) { - if (str->s) { + if (str->s && str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "AND NO CHAIN", sizeof("AND NO CHAIN") - 1); } if (mode & TRANS_COR_RELEASE && !(mode & TRANS_COR_NO_RELEASE)) { - if (str->s) { + if (str->s && str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "RELEASE", sizeof("RELEASE") - 1); } else if (mode & TRANS_COR_NO_RELEASE && !(mode & TRANS_COR_RELEASE)) { - if (str->s) { + if (str->s && str->s->len) { smart_str_appendl(str, " ", sizeof(" ") - 1); } smart_str_appendl(str, "NO RELEASE", sizeof("NO RELEASE") - 1); -- cgit v1.2.1 From edb064e2eea732e44fb2b9dd5b91fd532bf92654 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Thu, 12 Jun 2014 00:57:10 +0400 Subject: Fixed call to mysqli_init() from an object. (We should find some better fix) --- ext/mysqli/mysqli_api.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 1b2c7998b2..f5dd2749d1 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1475,7 +1475,14 @@ void php_mysqli_init(INTERNAL_FUNCTION_PARAMETERS) MYSQLI_RESOURCE *mysqli_resource; MY_MYSQL *mysql; - if (getThis() && (Z_MYSQLI_P(getThis()))->ptr) { +// TODO: We can't properly check if this was to mysql_init() in a class method +// or a call to mysqli->init(). +// To solve the problem, we added instanceof check for the class of $this +// ??? + if (getThis() && + instanceof_function(Z_OBJCE_P(getThis()), mysqli_link_class_entry TSRMLS_CC) && + (Z_MYSQLI_P(getThis()))->ptr) { +//??? if (getThis() && (Z_MYSQLI_P(getThis()))->ptr) { return; } -- cgit v1.2.1 From 92a708989380bfb5d5da00665895025398bdbc91 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Mon, 23 Jun 2014 19:12:15 +0800 Subject: Use zend_string in mysqlnd --- ext/mysqli/mysqli_api.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index f5dd2749d1..c70971cc82 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1148,12 +1148,21 @@ PHP_FUNCTION(mysqli_stmt_fetch) /* {{{ php_add_field_properties */ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRMLS_DC) { +#ifdef MYSQLI_USE_MYSQLND + add_property_str(value, "name", STR_COPY(field->name)); + add_property_str(value, "orgname", STR_COPY(field->org_name)); + add_property_str(value, "table", STR_COPY(field->table)); + add_property_str(value, "orgtable", STR_COPY(field->org_table)); + add_property_str(value, "def", STR_COPY(field->def)); + add_property_str(value, "db", STR_COPY(field->db)); +#else add_property_string(value, "name",(field->name ? field->name : "")); add_property_string(value, "orgname",(field->org_name ? field->org_name : "")); add_property_string(value, "table",(field->table ? field->table : "")); add_property_string(value, "orgtable",(field->org_table ? field->org_table : "")); add_property_string(value, "def",(field->def ? field->def : "")); add_property_string(value, "db",(field->db ? field->db : "")); +#endif /* FIXME: manually set the catalog to "def" due to bug in * libmysqlclient which does not initialize field->catalog -- cgit v1.2.1 From 56a966e88a98bf04b2cd253b9b18136c0cc4028b Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Mon, 23 Jun 2014 19:34:23 +0800 Subject: Respect the origin behavior (fix one test: ext/pdo_mysql/tests/bug_33689.phpt) --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index c70971cc82..dab3cd73a2 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1153,7 +1153,7 @@ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRML add_property_str(value, "orgname", STR_COPY(field->org_name)); add_property_str(value, "table", STR_COPY(field->table)); add_property_str(value, "orgtable", STR_COPY(field->org_table)); - add_property_str(value, "def", STR_COPY(field->def)); + add_property_str(value, "def", field->def? STR_COPY(field->def) : STR_EMPTY_ALLOC()); add_property_str(value, "db", STR_COPY(field->db)); #else add_property_string(value, "name",(field->name ? field->name : "")); -- cgit v1.2.1 From 8ce23d8f4fc5df0daec05642df8ead016f00fc32 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 25 Jun 2014 00:42:20 +0800 Subject: Don't use zend_string for other fields (only name here is enough) --- ext/mysqli/mysqli_api.c | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index dab3cd73a2..175b9b8076 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1149,21 +1149,17 @@ PHP_FUNCTION(mysqli_stmt_fetch) static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRMLS_DC) { #ifdef MYSQLI_USE_MYSQLND - add_property_str(value, "name", STR_COPY(field->name)); - add_property_str(value, "orgname", STR_COPY(field->org_name)); - add_property_str(value, "table", STR_COPY(field->table)); - add_property_str(value, "orgtable", STR_COPY(field->org_table)); - add_property_str(value, "def", field->def? STR_COPY(field->def) : STR_EMPTY_ALLOC()); - add_property_str(value, "db", STR_COPY(field->db)); + add_property_str(value, "name", STR_COPY(field->sname)); #else - add_property_string(value, "name",(field->name ? field->name : "")); - add_property_string(value, "orgname",(field->org_name ? field->org_name : "")); - add_property_string(value, "table",(field->table ? field->table : "")); - add_property_string(value, "orgtable",(field->org_table ? field->org_table : "")); - add_property_string(value, "def",(field->def ? field->def : "")); - add_property_string(value, "db",(field->db ? field->db : "")); + add_property_string(value, "name",(field->name ? field->name : ""), field->name_length); #endif + add_property_stringl(value, "orgname", (field->org_name ? field->org_name : ""), field->org_name_length); + add_property_stringl(value, "table", (field->table ? field->table : ""), field->table_length); + add_property_stringl(value, "orgtable", (field->org_table ? field->org_table : ""), field->org_table_length); + add_property_stringl(value, "def", (field->def ? field->def : ""), field->def_length); + add_property_stringl(value, "db", (field->db ? field->db : ""), field->db_length); + /* FIXME: manually set the catalog to "def" due to bug in * libmysqlclient which does not initialize field->catalog * and in addition, the catalog is always be "def" -- cgit v1.2.1 From 2d67b36a92fda457d353528e8eab791debdcc88c Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Fri, 27 Jun 2014 23:58:55 +0800 Subject: Fixed build with libmysql --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 175b9b8076..195eb41b5c 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1151,7 +1151,7 @@ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRML #ifdef MYSQLI_USE_MYSQLND add_property_str(value, "name", STR_COPY(field->sname)); #else - add_property_string(value, "name",(field->name ? field->name : ""), field->name_length); + add_property_stringl(value, "name",(field->name ? field->name : ""), field->name_length); #endif add_property_stringl(value, "orgname", (field->org_name ? field->org_name : ""), field->org_name_length); -- cgit v1.2.1 From da3aeeed39f24e34e9318d7123ff84f0c5a98e61 Mon Sep 17 00:00:00 2001 From: Xinchen Hui Date: Wed, 13 Aug 2014 15:51:43 +0800 Subject: clean up - avoid realloc --- ext/mysqli/mysqli_api.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 195eb41b5c..19f12417fe 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -2262,9 +2262,10 @@ PHP_FUNCTION(mysqli_stat) { MY_MYSQL *mysql; zval *mysql_link; - char *stat; #if defined(MYSQLI_USE_MYSQLND) - uint stat_len; + zend_string *stat; +#else + char *stat; #endif if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { @@ -2277,10 +2278,9 @@ PHP_FUNCTION(mysqli_stat) { RETURN_STRING(stat); #else - if (mysqlnd_stat(mysql->mysql, &stat, &stat_len) == PASS) + if (mysqlnd_stat(mysql->mysql, &stat) == PASS) { - RETVAL_STRINGL(stat, stat_len); - efree(stat); + RETURN_STR(stat); #endif } else { RETURN_FALSE; -- cgit v1.2.1 From d9f3eac12f0241792f802fc2ccbabcad7606ed38 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 15 Aug 2014 11:10:41 +0400 Subject: Bump version to 7.0.0-dev --- ext/mysqli/mysqli_api.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 19f12417fe..b5a68c2b93 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1689,7 +1689,8 @@ static int mysqli_options_get_option_zval_type(int option) switch (option) { #ifdef MYSQLI_USE_MYSQLND #if PHP_MAJOR_VERSION >= 6 - case MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE: + /* PHP-7 doesn't supprt unicode yet ??? */ + /*case MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE:*/ #endif case MYSQLND_OPT_NET_CMD_BUFFER_SIZE: case MYSQLND_OPT_NET_READ_BUFFER_SIZE: -- cgit v1.2.1 From e3de409eac95870cc0323f3e4df32a0435658333 Mon Sep 17 00:00:00 2001 From: Dmitry Stogov Date: Fri, 15 Aug 2014 13:08:53 +0400 Subject: Fixed PHP6 unicode related tests --- ext/mysqli/mysqli_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index b5a68c2b93..254bae1695 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1688,9 +1688,9 @@ static int mysqli_options_get_option_zval_type(int option) { switch (option) { #ifdef MYSQLI_USE_MYSQLND -#if PHP_MAJOR_VERSION >= 6 +#if PHP_MAJOR_VERSION == 6 /* PHP-7 doesn't supprt unicode yet ??? */ - /*case MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE:*/ + case MYSQLND_OPT_NUMERIC_AND_DATETIME_AS_UNICODE: #endif case MYSQLND_OPT_NET_CMD_BUFFER_SIZE: case MYSQLND_OPT_NET_READ_BUFFER_SIZE: -- cgit v1.2.1 From 63d3f0b844b3a5f1c94be3c97bca29235dc2b3fc Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 19 Aug 2014 08:07:31 +0200 Subject: basic macro replacements, all at once --- ext/mysqli/mysqli_api.c | 88 ++++++++++++++++++++++++------------------------- 1 file changed, 44 insertions(+), 44 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 254bae1695..44a252f2d2 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -152,9 +152,9 @@ PHP_FUNCTION(mysqli_affected_rows) rc = mysql_affected_rows(mysql->mysql); if (rc == (my_ulonglong) -1) { - RETURN_LONG(-1); + RETURN_INT(-1); } - MYSQLI_RETURN_LONG_LONG(rc); + MYSQLI_RETURN_INT_INT(rc); } /* }}} */ @@ -218,7 +218,7 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in #elif SIZEOF_LONG==4 bind[ofs].buffer_type = MYSQL_TYPE_LONG; #endif - bind[ofs].buffer = &Z_LVAL_P(param); + bind[ofs].buffer = &Z_IVAL_P(param); bind[ofs].is_null = &stmt->param.is_null[ofs]; break; @@ -443,7 +443,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un case MYSQL_TYPE_LONG: case MYSQL_TYPE_INT24: case MYSQL_TYPE_YEAR: - stmt->result.buf[ofs].type = IS_LONG; + stmt->result.buf[ofs].type = IS_INT; /* don't set stmt->result.buf[ofs].buflen to 0, we used ecalloc */ stmt->result.buf[ofs].val = (char *)emalloc(sizeof(int)); bind[ofs].buffer_type = MYSQL_TYPE_LONG; @@ -843,7 +843,7 @@ PHP_FUNCTION(mysqli_errno) return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_errno(mysql->mysql)); + RETURN_INT(mysql_errno(mysql->mysql)); } /* }}} */ @@ -911,7 +911,7 @@ PHP_FUNCTION(mysqli_stmt_execute) case MYSQL_TYPE_VAR_STRING: convert_to_string_ex(param); stmt->stmt->params[i].buffer = Z_STRVAL_P(param); - stmt->stmt->params[i].buffer_length = Z_STRLEN_P(param); + stmt->stmt->params[i].buffer_length = Z_STRSIZE_P(param); break; case MYSQL_TYPE_DOUBLE: convert_to_double_ex(param); @@ -919,8 +919,8 @@ PHP_FUNCTION(mysqli_stmt_execute) break; case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONG: - convert_to_long_ex(param); - stmt->stmt->params[i].buffer = &Z_LVAL_P(param); + convert_to_int_ex(param); + stmt->stmt->params[i].buffer = &Z_IVAL_P(param); break; default: break; @@ -990,7 +990,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) zval_ptr_dtor(result); if (!stmt->result.is_null[i]) { switch (stmt->result.buf[i].type) { - case IS_LONG: + case IS_INT: if ((stmt->stmt->fields[i].type == MYSQL_TYPE_LONG) && (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)) { @@ -1015,9 +1015,9 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) #endif } if (stmt->stmt->fields[i].flags & UNSIGNED_FLAG) { - ZVAL_LONG(result, *(unsigned int *)stmt->result.buf[i].val); + ZVAL_INT(result, *(unsigned int *)stmt->result.buf[i].val); } else { - ZVAL_LONG(result, *(int *)stmt->result.buf[i].val); + ZVAL_INT(result, *(int *)stmt->result.buf[i].val); } break; case IS_DOUBLE: @@ -1063,7 +1063,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) snprintf(tmp, sizeof(tmp), (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval); ZVAL_STRING(result, tmp); } else { - ZVAL_LONG(result, llval); + ZVAL_INT(result, llval); } } else { #if defined(MYSQL_DATA_TRUNCATED) && MYSQL_VERSION_ID > 50002 @@ -1166,12 +1166,12 @@ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRML */ add_property_string(value, "catalog", "def"); - add_property_long(value, "max_length", field->max_length); - add_property_long(value, "length", field->length); - add_property_long(value, "charsetnr", field->charsetnr); - add_property_long(value, "flags", field->flags); - add_property_long(value, "type", field->type); - add_property_long(value, "decimals", field->decimals); + add_property_int(value, "max_length", field->max_length); + add_property_int(value, "length", field->length); + add_property_int(value, "charsetnr", field->charsetnr); + add_property_int(value, "flags", field->flags); + add_property_int(value, "type", field->type); + add_property_int(value, "decimals", field->decimals); } /* }}} */ @@ -1278,7 +1278,7 @@ PHP_FUNCTION(mysqli_fetch_lengths) array_init(return_value); for (i = 0; i < mysql_num_fields(result); i++) { - add_index_long(return_value, i, ret[i]); + add_index_int(return_value, i, ret[i]); } } /* }}} */ @@ -1304,7 +1304,7 @@ PHP_FUNCTION(mysqli_field_count) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_field_count(mysql->mysql)); + RETURN_INT(mysql_field_count(mysql->mysql)); } /* }}} */ @@ -1344,7 +1344,7 @@ PHP_FUNCTION(mysqli_field_tell) } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_field_tell(result)); + RETURN_INT(mysql_field_tell(result)); } /* }}} */ @@ -1380,7 +1380,7 @@ PHP_FUNCTION(mysqli_get_client_info) Get MySQL client info */ PHP_FUNCTION(mysqli_get_client_version) { - RETURN_LONG((long)mysql_get_client_version()); + RETURN_INT((long)mysql_get_client_version()); } /* }}} */ @@ -1414,7 +1414,7 @@ PHP_FUNCTION(mysqli_get_proto_info) return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_get_proto_info(mysql->mysql)); + RETURN_INT(mysql_get_proto_info(mysql->mysql)); } /* }}} */ @@ -1450,7 +1450,7 @@ PHP_FUNCTION(mysqli_get_server_version) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_get_server_version(mysql->mysql)); + RETURN_INT(mysql_get_server_version(mysql->mysql)); } /* }}} */ @@ -1540,7 +1540,7 @@ PHP_FUNCTION(mysqli_insert_id) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); rc = mysql_insert_id(mysql->mysql); - MYSQLI_RETURN_LONG_LONG(rc) + MYSQLI_RETURN_INT_INT(rc) } /* }}} */ @@ -1658,7 +1658,7 @@ PHP_FUNCTION(mysqli_num_fields) } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_num_fields(result)); + RETURN_INT(mysql_num_fields(result)); } /* }}} */ @@ -1676,10 +1676,10 @@ PHP_FUNCTION(mysqli_num_rows) if (mysqli_result_is_unbuffered_and_not_everything_is_fetched(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT"); - RETURN_LONG(0); + RETURN_INT(0); } - MYSQLI_RETURN_LONG_LONG(mysql_num_rows(result)); + MYSQLI_RETURN_INT_INT(mysql_num_rows(result)); } /* }}} */ @@ -1725,12 +1725,12 @@ static int mysqli_options_get_option_zval_type(int option) case MYSQL_OPT_COMPRESS: #endif /* mysqlnd @ PHP 5.3.2 */ #ifdef MYSQL_OPT_SSL_VERIFY_SERVER_CERT - REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); + REGISTER_INT_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); #endif /* MySQL 5.1.1., mysqlnd @ PHP 5.3.3 */ #if (MYSQL_VERSION_ID >= 50611 && defined(CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS)) || defined(MYSQLI_USE_MYSQLND) case MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS: #endif - return IS_LONG; + return IS_INT; #ifdef MYSQL_SHARED_MEMORY_BASE_NAME case MYSQL_SHARED_MEMORY_BASE_NAME: @@ -1786,8 +1786,8 @@ PHP_FUNCTION(mysqli_options) case IS_STRING: convert_to_string_ex(mysql_value); break; - case IS_LONG: - convert_to_long_ex(mysql_value); + case IS_INT: + convert_to_int_ex(mysql_value); break; default: break; @@ -1797,8 +1797,8 @@ PHP_FUNCTION(mysqli_options) case IS_STRING: ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_P(mysql_value)); break; - case IS_LONG: - l_value = Z_LVAL_P(mysql_value); + case IS_INT: + l_value = Z_IVAL_P(mysql_value); ret = mysql_options(mysql->mysql, mysql_option, (char *)&l_value); break; default: @@ -2037,9 +2037,9 @@ PHP_FUNCTION(mysqli_stmt_affected_rows) rc = mysql_stmt_affected_rows(stmt->stmt); if (rc == (my_ulonglong) -1) { - RETURN_LONG(-1); + RETURN_INT(-1); } - MYSQLI_RETURN_LONG_LONG(rc) + MYSQLI_RETURN_INT_INT(rc) } /* }}} */ @@ -2097,7 +2097,7 @@ PHP_FUNCTION(mysqli_stmt_field_count) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_stmt_field_count(stmt->stmt)); + RETURN_INT(mysql_stmt_field_count(stmt->stmt)); } /* }}} */ @@ -2131,7 +2131,7 @@ PHP_FUNCTION(mysqli_stmt_insert_id) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_insert_id(stmt->stmt); - MYSQLI_RETURN_LONG_LONG(rc) + MYSQLI_RETURN_INT_INT(rc) } /* }}} */ @@ -2147,7 +2147,7 @@ PHP_FUNCTION(mysqli_stmt_param_count) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_stmt_param_count(stmt->stmt)); + RETURN_INT(mysql_stmt_param_count(stmt->stmt)); } /* }}} */ @@ -2186,7 +2186,7 @@ PHP_FUNCTION(mysqli_stmt_num_rows) MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_num_rows(stmt->stmt); - MYSQLI_RETURN_LONG_LONG(rc) + MYSQLI_RETURN_INT_INT(rc) } /* }}} */ @@ -2380,7 +2380,7 @@ PHP_FUNCTION(mysqli_stmt_attr_get) if (attr == STMT_ATTR_UPDATE_MAX_LENGTH) value = *((my_bool *)&value); #endif - RETURN_LONG((long)value); + RETURN_INT((long)value); } /* }}} */ @@ -2396,7 +2396,7 @@ PHP_FUNCTION(mysqli_stmt_errno) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED); - RETURN_LONG(mysql_stmt_errno(stmt->stmt)); + RETURN_INT(mysql_stmt_errno(stmt->stmt)); } /* }}} */ @@ -2619,7 +2619,7 @@ PHP_FUNCTION(mysqli_thread_id) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_LONG((long) mysql_thread_id(mysql->mysql)); + RETURN_INT((long) mysql_thread_id(mysql->mysql)); } /* }}} */ @@ -2672,7 +2672,7 @@ PHP_FUNCTION(mysqli_warning_count) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_LONG(mysql_warning_count(mysql->mysql)); + RETURN_INT(mysql_warning_count(mysql->mysql)); } /* }}} */ -- cgit v1.2.1 From c517d6d8534b00cc0b84f16aad897c28b720a156 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Tue, 19 Aug 2014 17:08:15 +0200 Subject: ported ext/mysqli --- ext/mysqli/mysqli_api.c | 100 ++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 50 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 44a252f2d2..d20e8e9229 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -213,9 +213,9 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in break; case 'i': /* Integer */ -#if SIZEOF_LONG==8 +#if SIZEOF_ZEND_INT==8 bind[ofs].buffer_type = MYSQL_TYPE_LONGLONG; -#elif SIZEOF_LONG==4 +#elif SIZEOF_ZEND_INT==4 bind[ofs].buffer_type = MYSQL_TYPE_LONG; #endif bind[ofs].buffer = &Z_IVAL_P(param); @@ -284,9 +284,9 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in type = MYSQL_TYPE_DOUBLE; break; case 'i': /* Integer */ -#if SIZEOF_LONG==8 +#if SIZEOF_ZEND_INT==8 type = MYSQL_TYPE_LONGLONG; -#elif SIZEOF_LONG==4 +#elif SIZEOF_ZEND_INT==4 type = MYSQL_TYPE_LONG; #endif break; @@ -326,7 +326,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) zval *mysql_stmt; char *types; int types_len; - unsigned long rc; + php_uint_t rc; /* calculate and check number of parameters */ if (argc < 2) { @@ -392,7 +392,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un int i, ofs; int var_cnt = argc - start; long col_type; - ulong rc; + php_uint_t rc; /* prevent leak if variables are already bound */ if (stmt->result.var_cnt) { @@ -488,7 +488,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un /* Changed to my_bool in MySQL 5.1. See MySQL Bug #16144 */ my_bool tmp; #else - ulong tmp = 0; + php_uint_t tmp = 0; #endif stmt->result.buf[ofs].type = IS_STRING; /* @@ -578,7 +578,7 @@ PHP_FUNCTION(mysqli_stmt_bind_result) zval *args; int argc = ZEND_NUM_ARGS(); int start = 1; - ulong rc; + php_uint_t rc; MY_STMT *stmt; zval *mysql_stmt; @@ -624,7 +624,7 @@ PHP_FUNCTION(mysqli_change_user) zval *mysql_link = NULL; char *user, *password, *dbname; int user_len, password_len, dbname_len; - ulong rc; + php_uint_t rc; #if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET) const CHARSET_INFO * old_charset; #endif @@ -752,11 +752,11 @@ PHP_FUNCTION(mysqli_commit) { MY_MYSQL *mysql; zval *mysql_link; - long flags = TRANS_COR_NO_OPT; + php_int_t flags = TRANS_COR_NO_OPT; char * name = NULL; int name_len = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|is", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -778,9 +778,9 @@ PHP_FUNCTION(mysqli_data_seek) { MYSQL_RES *result; zval *mysql_result; - long offset; + php_int_t offset; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { return; } @@ -951,7 +951,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) MY_STMT *stmt; zval *mysql_stmt; unsigned int i; - ulong ret; + php_uint_t ret; unsigned int uval; my_ulonglong llval; @@ -996,7 +996,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) { /* unsigned int (11) */ uval= *(unsigned int *) stmt->result.buf[i].val; -#if SIZEOF_LONG==4 +#if SIZEOF_ZEND_INT==4 if (uval > INT_MAX) { char *tmp, *p; int j = 10; @@ -1047,9 +1047,9 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) { llval= *(my_ulonglong *) stmt->result.buf[i].val; } -#if SIZEOF_LONG==8 +#if SIZEOF_ZEND_INT==8 if (uns && llval > 9223372036854775807L) { -#elif SIZEOF_LONG==4 +#elif SIZEOF_ZEND_INT==4 if ((uns && llval > L64(2147483647)) || (!uns && (( L64(2147483647) < (my_longlong) llval) || (L64(-2147483648) > (my_longlong) llval)))) @@ -1234,15 +1234,15 @@ PHP_FUNCTION(mysqli_fetch_field_direct) MYSQL_RES *result; zval *mysql_result; const MYSQL_FIELD *field; - long offset; + php_int_t offset; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); - if (offset < 0 || offset >= (long) mysql_num_fields(result)) { + if (offset < 0 || offset >= (php_int_t) mysql_num_fields(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Field offset is invalid for resultset"); RETURN_FALSE; } @@ -1263,7 +1263,7 @@ PHP_FUNCTION(mysqli_fetch_lengths) MYSQL_RES *result; zval *mysql_result; unsigned int i; - unsigned long *ret; + php_uint_t *ret; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; @@ -1315,9 +1315,9 @@ PHP_FUNCTION(mysqli_field_seek) { MYSQL_RES *result; zval *mysql_result; - long fieldnr; + php_int_t fieldnr; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); @@ -1380,7 +1380,7 @@ PHP_FUNCTION(mysqli_get_client_info) Get MySQL client info */ PHP_FUNCTION(mysqli_get_client_version) { - RETURN_INT((long)mysql_get_client_version()); + RETURN_INT((php_int_t)mysql_get_client_version()); } /* }}} */ @@ -1550,9 +1550,9 @@ PHP_FUNCTION(mysqli_kill) { MY_MYSQL *mysql; zval *mysql_link; - long processid; + php_int_t processid; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -1761,12 +1761,12 @@ PHP_FUNCTION(mysqli_options) MY_MYSQL *mysql; zval *mysql_link = NULL; zval *mysql_value; - long mysql_option; + php_int_t mysql_option; unsigned int l_value; - long ret; + php_int_t ret; int expected_type; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Olz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oiz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); @@ -1816,7 +1816,7 @@ PHP_FUNCTION(mysqli_ping) { MY_MYSQL *mysql; zval *mysql_link; - long rc; + php_int_t rc; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; @@ -1976,11 +1976,11 @@ PHP_FUNCTION(mysqli_rollback) { MY_MYSQL *mysql; zval *mysql_link; - long flags = TRANS_COR_NO_OPT; + php_int_t flags = TRANS_COR_NO_OPT; char * name = NULL; int name_len = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|is", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -2003,10 +2003,10 @@ PHP_FUNCTION(mysqli_stmt_send_long_data) MY_STMT *stmt; zval *mysql_stmt; char *data; - long param_nr; + php_int_t param_nr; int data_len; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ols", &mysql_stmt, mysqli_stmt_class_entry, ¶m_nr, &data, &data_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ois", &mysql_stmt, mysqli_stmt_class_entry, ¶m_nr, &data, &data_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); @@ -2069,9 +2069,9 @@ PHP_FUNCTION(mysqli_stmt_data_seek) { MY_STMT *stmt; zval *mysql_stmt; - long offset; + php_int_t offset; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &offset) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_stmt, mysqli_stmt_class_entry, &offset) == FAILURE) { return; } if (offset < 0) { @@ -2296,9 +2296,9 @@ PHP_FUNCTION(mysqli_refresh) { MY_MYSQL *mysql; zval *mysql_link = NULL; - long options; + php_int_t options; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &options) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_link, mysqli_link_class_entry, &options) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); @@ -2316,21 +2316,21 @@ PHP_FUNCTION(mysqli_stmt_attr_set) { MY_STMT *stmt; zval *mysql_stmt; - long mode_in; + php_int_t mode_in; #if MYSQL_VERSION_ID >= 50107 my_bool mode_b; #endif - ulong mode; - ulong attr; + php_uint_t mode; + php_int_t attr; void *mode_p; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode_in) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oii", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode_in) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); if (mode_in < 0) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "mode should be non-negative, %ld passed", mode_in); + php_error_docref(NULL TSRMLS_CC, E_WARNING, "mode should be non-negative, %pd passed", mode_in); RETURN_FALSE; } @@ -2363,11 +2363,11 @@ PHP_FUNCTION(mysqli_stmt_attr_get) { MY_STMT *stmt; zval *mysql_stmt; - ulong value = 0; - ulong attr; + php_uint_t value = 0; + php_int_t attr; int rc; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); @@ -2380,7 +2380,7 @@ PHP_FUNCTION(mysqli_stmt_attr_get) if (attr == STMT_ATTR_UPDATE_MAX_LENGTH) value = *((my_bool *)&value); #endif - RETURN_INT((long)value); + RETURN_INT((php_uint_t)value); } /* }}} */ @@ -2580,10 +2580,10 @@ PHP_FUNCTION(mysqli_store_result) MYSQL_RES *result; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; - long flags = 0; + php_int_t flags = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &mysql_link, mysqli_link_class_entry, &flags) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|i", &mysql_link, mysqli_link_class_entry, &flags) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -2619,7 +2619,7 @@ PHP_FUNCTION(mysqli_thread_id) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT((long) mysql_thread_id(mysql->mysql)); + RETURN_INT((php_int_t) mysql_thread_id(mysql->mysql)); } /* }}} */ -- cgit v1.2.1 From eb1871b3fb63f48216f20663f0cc479d322e3970 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 21 Aug 2014 09:54:40 +0200 Subject: yet trivial fixes to mysql exts --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index d20e8e9229..d2567ae1b4 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -391,7 +391,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un MYSQL_BIND *bind; int i, ofs; int var_cnt = argc - start; - long col_type; + php_int_t col_type; php_uint_t rc; /* prevent leak if variables are already bound */ -- cgit v1.2.1 From c3e3c98ec666812daaaca896cf5ef758a8a6df14 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Aug 2014 19:24:55 +0200 Subject: master renames phase 1 --- ext/mysqli/mysqli_api.c | 170 ++++++++++++++++++++++++------------------------ 1 file changed, 85 insertions(+), 85 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index d2567ae1b4..7b7f7e582b 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -152,9 +152,9 @@ PHP_FUNCTION(mysqli_affected_rows) rc = mysql_affected_rows(mysql->mysql); if (rc == (my_ulonglong) -1) { - RETURN_INT(-1); + RETURN_LONG(-1); } - MYSQLI_RETURN_INT_INT(rc); + MYSQLI_RETURN_LONG_INT(rc); } /* }}} */ @@ -218,7 +218,7 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in #elif SIZEOF_ZEND_INT==4 bind[ofs].buffer_type = MYSQL_TYPE_LONG; #endif - bind[ofs].buffer = &Z_IVAL_P(param); + bind[ofs].buffer = &Z_LVAL_P(param); bind[ofs].is_null = &stmt->param.is_null[ofs]; break; @@ -326,7 +326,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) zval *mysql_stmt; char *types; int types_len; - php_uint_t rc; + zend_ulong rc; /* calculate and check number of parameters */ if (argc < 2) { @@ -391,8 +391,8 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un MYSQL_BIND *bind; int i, ofs; int var_cnt = argc - start; - php_int_t col_type; - php_uint_t rc; + zend_long col_type; + zend_ulong rc; /* prevent leak if variables are already bound */ if (stmt->result.var_cnt) { @@ -443,7 +443,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un case MYSQL_TYPE_LONG: case MYSQL_TYPE_INT24: case MYSQL_TYPE_YEAR: - stmt->result.buf[ofs].type = IS_INT; + stmt->result.buf[ofs].type = IS_LONG; /* don't set stmt->result.buf[ofs].buflen to 0, we used ecalloc */ stmt->result.buf[ofs].val = (char *)emalloc(sizeof(int)); bind[ofs].buffer_type = MYSQL_TYPE_LONG; @@ -488,7 +488,7 @@ mysqli_stmt_bind_result_do_bind(MY_STMT *stmt, zval *args, unsigned int argc, un /* Changed to my_bool in MySQL 5.1. See MySQL Bug #16144 */ my_bool tmp; #else - php_uint_t tmp = 0; + zend_ulong tmp = 0; #endif stmt->result.buf[ofs].type = IS_STRING; /* @@ -578,7 +578,7 @@ PHP_FUNCTION(mysqli_stmt_bind_result) zval *args; int argc = ZEND_NUM_ARGS(); int start = 1; - php_uint_t rc; + zend_ulong rc; MY_STMT *stmt; zval *mysql_stmt; @@ -624,7 +624,7 @@ PHP_FUNCTION(mysqli_change_user) zval *mysql_link = NULL; char *user, *password, *dbname; int user_len, password_len, dbname_len; - php_uint_t rc; + zend_ulong rc; #if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET) const CHARSET_INFO * old_charset; #endif @@ -752,11 +752,11 @@ PHP_FUNCTION(mysqli_commit) { MY_MYSQL *mysql; zval *mysql_link; - php_int_t flags = TRANS_COR_NO_OPT; + zend_long flags = TRANS_COR_NO_OPT; char * name = NULL; int name_len = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|is", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -778,9 +778,9 @@ PHP_FUNCTION(mysqli_data_seek) { MYSQL_RES *result; zval *mysql_result; - php_int_t offset; + zend_long offset; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { return; } @@ -843,7 +843,7 @@ PHP_FUNCTION(mysqli_errno) return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_errno(mysql->mysql)); + RETURN_LONG(mysql_errno(mysql->mysql)); } /* }}} */ @@ -911,7 +911,7 @@ PHP_FUNCTION(mysqli_stmt_execute) case MYSQL_TYPE_VAR_STRING: convert_to_string_ex(param); stmt->stmt->params[i].buffer = Z_STRVAL_P(param); - stmt->stmt->params[i].buffer_length = Z_STRSIZE_P(param); + stmt->stmt->params[i].buffer_length = Z_STRLEN_P(param); break; case MYSQL_TYPE_DOUBLE: convert_to_double_ex(param); @@ -920,7 +920,7 @@ PHP_FUNCTION(mysqli_stmt_execute) case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONG: convert_to_int_ex(param); - stmt->stmt->params[i].buffer = &Z_IVAL_P(param); + stmt->stmt->params[i].buffer = &Z_LVAL_P(param); break; default: break; @@ -951,7 +951,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) MY_STMT *stmt; zval *mysql_stmt; unsigned int i; - php_uint_t ret; + zend_ulong ret; unsigned int uval; my_ulonglong llval; @@ -990,7 +990,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) zval_ptr_dtor(result); if (!stmt->result.is_null[i]) { switch (stmt->result.buf[i].type) { - case IS_INT: + case IS_LONG: if ((stmt->stmt->fields[i].type == MYSQL_TYPE_LONG) && (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)) { @@ -1015,9 +1015,9 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) #endif } if (stmt->stmt->fields[i].flags & UNSIGNED_FLAG) { - ZVAL_INT(result, *(unsigned int *)stmt->result.buf[i].val); + ZVAL_LONG(result, *(unsigned int *)stmt->result.buf[i].val); } else { - ZVAL_INT(result, *(int *)stmt->result.buf[i].val); + ZVAL_LONG(result, *(int *)stmt->result.buf[i].val); } break; case IS_DOUBLE: @@ -1063,7 +1063,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) snprintf(tmp, sizeof(tmp), (stmt->stmt->fields[i].flags & UNSIGNED_FLAG)? MYSQLI_LLU_SPEC : MYSQLI_LL_SPEC, llval); ZVAL_STRING(result, tmp); } else { - ZVAL_INT(result, llval); + ZVAL_LONG(result, llval); } } else { #if defined(MYSQL_DATA_TRUNCATED) && MYSQL_VERSION_ID > 50002 @@ -1149,7 +1149,7 @@ PHP_FUNCTION(mysqli_stmt_fetch) static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRMLS_DC) { #ifdef MYSQLI_USE_MYSQLND - add_property_str(value, "name", STR_COPY(field->sname)); + add_property_str(value, "name", zend_string_copy(field->sname)); #else add_property_stringl(value, "name",(field->name ? field->name : ""), field->name_length); #endif @@ -1166,12 +1166,12 @@ static void php_add_field_properties(zval *value, const MYSQL_FIELD *field TSRML */ add_property_string(value, "catalog", "def"); - add_property_int(value, "max_length", field->max_length); - add_property_int(value, "length", field->length); - add_property_int(value, "charsetnr", field->charsetnr); - add_property_int(value, "flags", field->flags); - add_property_int(value, "type", field->type); - add_property_int(value, "decimals", field->decimals); + add_property_long(value, "max_length", field->max_length); + add_property_long(value, "length", field->length); + add_property_long(value, "charsetnr", field->charsetnr); + add_property_long(value, "flags", field->flags); + add_property_long(value, "type", field->type); + add_property_long(value, "decimals", field->decimals); } /* }}} */ @@ -1234,15 +1234,15 @@ PHP_FUNCTION(mysqli_fetch_field_direct) MYSQL_RES *result; zval *mysql_result; const MYSQL_FIELD *field; - php_int_t offset; + zend_long offset; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &offset) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); - if (offset < 0 || offset >= (php_int_t) mysql_num_fields(result)) { + if (offset < 0 || offset >= (zend_long) mysql_num_fields(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Field offset is invalid for resultset"); RETURN_FALSE; } @@ -1263,7 +1263,7 @@ PHP_FUNCTION(mysqli_fetch_lengths) MYSQL_RES *result; zval *mysql_result; unsigned int i; - php_uint_t *ret; + zend_ulong *ret; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_result, mysqli_result_class_entry) == FAILURE) { return; @@ -1278,7 +1278,7 @@ PHP_FUNCTION(mysqli_fetch_lengths) array_init(return_value); for (i = 0; i < mysql_num_fields(result); i++) { - add_index_int(return_value, i, ret[i]); + add_index_long(return_value, i, ret[i]); } } /* }}} */ @@ -1304,7 +1304,7 @@ PHP_FUNCTION(mysqli_field_count) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_field_count(mysql->mysql)); + RETURN_LONG(mysql_field_count(mysql->mysql)); } /* }}} */ @@ -1315,9 +1315,9 @@ PHP_FUNCTION(mysqli_field_seek) { MYSQL_RES *result; zval *mysql_result; - php_int_t fieldnr; + zend_long fieldnr; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_result, mysqli_result_class_entry, &fieldnr) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); @@ -1344,7 +1344,7 @@ PHP_FUNCTION(mysqli_field_tell) } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); - RETURN_INT(mysql_field_tell(result)); + RETURN_LONG(mysql_field_tell(result)); } /* }}} */ @@ -1380,7 +1380,7 @@ PHP_FUNCTION(mysqli_get_client_info) Get MySQL client info */ PHP_FUNCTION(mysqli_get_client_version) { - RETURN_INT((php_int_t)mysql_get_client_version()); + RETURN_LONG((zend_long)mysql_get_client_version()); } /* }}} */ @@ -1414,7 +1414,7 @@ PHP_FUNCTION(mysqli_get_proto_info) return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_get_proto_info(mysql->mysql)); + RETURN_LONG(mysql_get_proto_info(mysql->mysql)); } /* }}} */ @@ -1450,7 +1450,7 @@ PHP_FUNCTION(mysqli_get_server_version) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_get_server_version(mysql->mysql)); + RETURN_LONG(mysql_get_server_version(mysql->mysql)); } /* }}} */ @@ -1540,7 +1540,7 @@ PHP_FUNCTION(mysqli_insert_id) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); rc = mysql_insert_id(mysql->mysql); - MYSQLI_RETURN_INT_INT(rc) + MYSQLI_RETURN_LONG_INT(rc) } /* }}} */ @@ -1550,9 +1550,9 @@ PHP_FUNCTION(mysqli_kill) { MY_MYSQL *mysql; zval *mysql_link; - php_int_t processid; + zend_long processid; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &processid) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -1658,7 +1658,7 @@ PHP_FUNCTION(mysqli_num_fields) } MYSQLI_FETCH_RESOURCE(result, MYSQL_RES *, mysql_result, "mysqli_result", MYSQLI_STATUS_VALID); - RETURN_INT(mysql_num_fields(result)); + RETURN_LONG(mysql_num_fields(result)); } /* }}} */ @@ -1676,10 +1676,10 @@ PHP_FUNCTION(mysqli_num_rows) if (mysqli_result_is_unbuffered_and_not_everything_is_fetched(result)) { php_error_docref(NULL TSRMLS_CC, E_WARNING, "Function cannot be used with MYSQL_USE_RESULT"); - RETURN_INT(0); + RETURN_LONG(0); } - MYSQLI_RETURN_INT_INT(mysql_num_rows(result)); + MYSQLI_RETURN_LONG_INT(mysql_num_rows(result)); } /* }}} */ @@ -1725,12 +1725,12 @@ static int mysqli_options_get_option_zval_type(int option) case MYSQL_OPT_COMPRESS: #endif /* mysqlnd @ PHP 5.3.2 */ #ifdef MYSQL_OPT_SSL_VERIFY_SERVER_CERT - REGISTER_INT_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); + REGISTER_LONG_CONSTANT("MYSQLI_OPT_SSL_VERIFY_SERVER_CERT", MYSQL_OPT_SSL_VERIFY_SERVER_CERT, CONST_CS | CONST_PERSISTENT); #endif /* MySQL 5.1.1., mysqlnd @ PHP 5.3.3 */ #if (MYSQL_VERSION_ID >= 50611 && defined(CLIENT_CAN_HANDLE_EXPIRED_PASSWORDS)) || defined(MYSQLI_USE_MYSQLND) case MYSQL_OPT_CAN_HANDLE_EXPIRED_PASSWORDS: #endif - return IS_INT; + return IS_LONG; #ifdef MYSQL_SHARED_MEMORY_BASE_NAME case MYSQL_SHARED_MEMORY_BASE_NAME: @@ -1761,12 +1761,12 @@ PHP_FUNCTION(mysqli_options) MY_MYSQL *mysql; zval *mysql_link = NULL; zval *mysql_value; - php_int_t mysql_option; + zend_long mysql_option; unsigned int l_value; - php_int_t ret; + zend_long ret; int expected_type; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oiz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Olz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); @@ -1786,7 +1786,7 @@ PHP_FUNCTION(mysqli_options) case IS_STRING: convert_to_string_ex(mysql_value); break; - case IS_INT: + case IS_LONG: convert_to_int_ex(mysql_value); break; default: @@ -1797,8 +1797,8 @@ PHP_FUNCTION(mysqli_options) case IS_STRING: ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_P(mysql_value)); break; - case IS_INT: - l_value = Z_IVAL_P(mysql_value); + case IS_LONG: + l_value = Z_LVAL_P(mysql_value); ret = mysql_options(mysql->mysql, mysql_option, (char *)&l_value); break; default: @@ -1816,7 +1816,7 @@ PHP_FUNCTION(mysqli_ping) { MY_MYSQL *mysql; zval *mysql_link; - php_int_t rc; + zend_long rc; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O", &mysql_link, mysqli_link_class_entry) == FAILURE) { return; @@ -1962,9 +1962,9 @@ PHP_FUNCTION(mysqli_real_escape_string) { } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - newstr = STR_ALLOC(2 * escapestr_len, 0); + newstr = zend_string_alloc(2 * escapestr_len, 0); newstr->len = mysql_real_escape_string(mysql->mysql, newstr->val, escapestr, escapestr_len); - newstr = STR_REALLOC(newstr, newstr->len, 0); + newstr = zend_string_realloc(newstr, newstr->len, 0); RETURN_STR(newstr); } @@ -1976,11 +1976,11 @@ PHP_FUNCTION(mysqli_rollback) { MY_MYSQL *mysql; zval *mysql_link; - php_int_t flags = TRANS_COR_NO_OPT; + zend_long flags = TRANS_COR_NO_OPT; char * name = NULL; int name_len = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|is", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -2003,10 +2003,10 @@ PHP_FUNCTION(mysqli_stmt_send_long_data) MY_STMT *stmt; zval *mysql_stmt; char *data; - php_int_t param_nr; + zend_long param_nr; int data_len; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ois", &mysql_stmt, mysqli_stmt_class_entry, ¶m_nr, &data, &data_len) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ols", &mysql_stmt, mysqli_stmt_class_entry, ¶m_nr, &data, &data_len) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); @@ -2037,9 +2037,9 @@ PHP_FUNCTION(mysqli_stmt_affected_rows) rc = mysql_stmt_affected_rows(stmt->stmt); if (rc == (my_ulonglong) -1) { - RETURN_INT(-1); + RETURN_LONG(-1); } - MYSQLI_RETURN_INT_INT(rc) + MYSQLI_RETURN_LONG_INT(rc) } /* }}} */ @@ -2069,9 +2069,9 @@ PHP_FUNCTION(mysqli_stmt_data_seek) { MY_STMT *stmt; zval *mysql_stmt; - php_int_t offset; + zend_long offset; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_stmt, mysqli_stmt_class_entry, &offset) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &offset) == FAILURE) { return; } if (offset < 0) { @@ -2097,7 +2097,7 @@ PHP_FUNCTION(mysqli_stmt_field_count) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_stmt_field_count(stmt->stmt)); + RETURN_LONG(mysql_stmt_field_count(stmt->stmt)); } /* }}} */ @@ -2131,7 +2131,7 @@ PHP_FUNCTION(mysqli_stmt_insert_id) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_insert_id(stmt->stmt); - MYSQLI_RETURN_INT_INT(rc) + MYSQLI_RETURN_LONG_INT(rc) } /* }}} */ @@ -2147,7 +2147,7 @@ PHP_FUNCTION(mysqli_stmt_param_count) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_stmt_param_count(stmt->stmt)); + RETURN_LONG(mysql_stmt_param_count(stmt->stmt)); } /* }}} */ @@ -2186,7 +2186,7 @@ PHP_FUNCTION(mysqli_stmt_num_rows) MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); rc = mysql_stmt_num_rows(stmt->stmt); - MYSQLI_RETURN_INT_INT(rc) + MYSQLI_RETURN_LONG_INT(rc) } /* }}} */ @@ -2296,9 +2296,9 @@ PHP_FUNCTION(mysqli_refresh) { MY_MYSQL *mysql; zval *mysql_link = NULL; - php_int_t options; + zend_long options; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_link, mysqli_link_class_entry, &options) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_link, mysqli_link_class_entry, &options) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_INITIALIZED); @@ -2316,15 +2316,15 @@ PHP_FUNCTION(mysqli_stmt_attr_set) { MY_STMT *stmt; zval *mysql_stmt; - php_int_t mode_in; + zend_long mode_in; #if MYSQL_VERSION_ID >= 50107 my_bool mode_b; #endif - php_uint_t mode; - php_int_t attr; + zend_ulong mode; + zend_long attr; void *mode_p; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oii", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode_in) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oll", &mysql_stmt, mysqli_stmt_class_entry, &attr, &mode_in) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); @@ -2363,11 +2363,11 @@ PHP_FUNCTION(mysqli_stmt_attr_get) { MY_STMT *stmt; zval *mysql_stmt; - php_uint_t value = 0; - php_int_t attr; + zend_ulong value = 0; + zend_long attr; int rc; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Oi", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ol", &mysql_stmt, mysqli_stmt_class_entry, &attr) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_VALID); @@ -2380,7 +2380,7 @@ PHP_FUNCTION(mysqli_stmt_attr_get) if (attr == STMT_ATTR_UPDATE_MAX_LENGTH) value = *((my_bool *)&value); #endif - RETURN_INT((php_uint_t)value); + RETURN_LONG((zend_ulong)value); } /* }}} */ @@ -2396,7 +2396,7 @@ PHP_FUNCTION(mysqli_stmt_errno) } MYSQLI_FETCH_RESOURCE_STMT(stmt, mysql_stmt, MYSQLI_STATUS_INITIALIZED); - RETURN_INT(mysql_stmt_errno(stmt->stmt)); + RETURN_LONG(mysql_stmt_errno(stmt->stmt)); } /* }}} */ @@ -2580,10 +2580,10 @@ PHP_FUNCTION(mysqli_store_result) MYSQL_RES *result; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; - php_int_t flags = 0; + zend_long flags = 0; - if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|i", &mysql_link, mysqli_link_class_entry, &flags) == FAILURE) { + if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|l", &mysql_link, mysqli_link_class_entry, &flags) == FAILURE) { return; } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); @@ -2619,7 +2619,7 @@ PHP_FUNCTION(mysqli_thread_id) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT((php_int_t) mysql_thread_id(mysql->mysql)); + RETURN_LONG((zend_long) mysql_thread_id(mysql->mysql)); } /* }}} */ @@ -2672,7 +2672,7 @@ PHP_FUNCTION(mysqli_warning_count) } MYSQLI_FETCH_RESOURCE_CONN(mysql, mysql_link, MYSQLI_STATUS_VALID); - RETURN_INT(mysql_warning_count(mysql->mysql)); + RETURN_LONG(mysql_warning_count(mysql->mysql)); } /* }}} */ -- cgit v1.2.1 From 28b7a033185478839c511551ce2344e459e7f880 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Aug 2014 21:20:44 +0200 Subject: master renamings phase 5 --- ext/mysqli/mysqli_api.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 7b7f7e582b..f6286af4c4 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -213,9 +213,9 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in break; case 'i': /* Integer */ -#if SIZEOF_ZEND_INT==8 +#if SIZEOF_ZEND_LONG==8 bind[ofs].buffer_type = MYSQL_TYPE_LONGLONG; -#elif SIZEOF_ZEND_INT==4 +#elif SIZEOF_ZEND_LONG==4 bind[ofs].buffer_type = MYSQL_TYPE_LONG; #endif bind[ofs].buffer = &Z_LVAL_P(param); @@ -284,9 +284,9 @@ int mysqli_stmt_bind_param_do_bind(MY_STMT *stmt, unsigned int argc, unsigned in type = MYSQL_TYPE_DOUBLE; break; case 'i': /* Integer */ -#if SIZEOF_ZEND_INT==8 +#if SIZEOF_ZEND_LONG==8 type = MYSQL_TYPE_LONGLONG; -#elif SIZEOF_ZEND_INT==4 +#elif SIZEOF_ZEND_LONG==4 type = MYSQL_TYPE_LONG; #endif break; @@ -996,7 +996,7 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) { /* unsigned int (11) */ uval= *(unsigned int *) stmt->result.buf[i].val; -#if SIZEOF_ZEND_INT==4 +#if SIZEOF_ZEND_LONG==4 if (uval > INT_MAX) { char *tmp, *p; int j = 10; @@ -1047,9 +1047,9 @@ void mysqli_stmt_fetch_libmysql(INTERNAL_FUNCTION_PARAMETERS) { llval= *(my_ulonglong *) stmt->result.buf[i].val; } -#if SIZEOF_ZEND_INT==8 +#if SIZEOF_ZEND_LONG==8 if (uns && llval > 9223372036854775807L) { -#elif SIZEOF_ZEND_INT==4 +#elif SIZEOF_ZEND_LONG==4 if ((uns && llval > L64(2147483647)) || (!uns && (( L64(2147483647) < (my_longlong) llval) || (L64(-2147483648) > (my_longlong) llval)))) -- cgit v1.2.1 From af59e92b24c8f624672720d47ef65bd8457728b9 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 25 Aug 2014 21:51:49 +0200 Subject: master renames phase 7 --- ext/mysqli/mysqli_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index f6286af4c4..0b6d866437 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -919,7 +919,7 @@ PHP_FUNCTION(mysqli_stmt_execute) break; case MYSQL_TYPE_LONGLONG: case MYSQL_TYPE_LONG: - convert_to_int_ex(param); + convert_to_long_ex(param); stmt->stmt->params[i].buffer = &Z_LVAL_P(param); break; default: @@ -1787,7 +1787,7 @@ PHP_FUNCTION(mysqli_options) convert_to_string_ex(mysql_value); break; case IS_LONG: - convert_to_int_ex(mysql_value); + convert_to_long_ex(mysql_value); break; default: break; -- cgit v1.2.1 From 3234480827b27ff5d3469a732167afd289632a96 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 27 Aug 2014 15:31:48 +0200 Subject: first show to make 's' work with size_t --- ext/mysqli/mysqli_api.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 0b6d866437..b8de1dfe85 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -37,7 +37,7 @@ #if !defined(MYSQLI_USE_MYSQLND) /* {{{ mysqli_tx_cor_options_to_string */ -static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned int mode) +static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned size_t mode) { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { if (str->s && str->s->len) { @@ -623,7 +623,7 @@ PHP_FUNCTION(mysqli_change_user) MY_MYSQL *mysql; zval *mysql_link = NULL; char *user, *password, *dbname; - int user_len, password_len, dbname_len; + size_t user_len, password_len, dbname_len; zend_ulong rc; #if !defined(MYSQLI_USE_MYSQLND) && defined(HAVE_MYSQLI_SET_CHARSET) const CHARSET_INFO * old_charset; @@ -754,7 +754,7 @@ PHP_FUNCTION(mysqli_commit) zval *mysql_link; zend_long flags = TRANS_COR_NO_OPT; char * name = NULL; - int name_len = 0; + size_t name_len = 0; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; @@ -805,7 +805,7 @@ PHP_FUNCTION(mysqli_data_seek) PHP_FUNCTION(mysqli_debug) { char *debug; - int debug_len; + size_t debug_len; if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &debug, &debug_len) == FAILURE) { return; @@ -1836,7 +1836,7 @@ PHP_FUNCTION(mysqli_prepare) MY_MYSQL *mysql; MY_STMT *stmt; char *query = NULL; - int query_len; + size_t query_len; zval *mysql_link; MYSQLI_RESOURCE *mysqli_resource; @@ -1978,7 +1978,7 @@ PHP_FUNCTION(mysqli_rollback) zval *mysql_link; zend_long flags = TRANS_COR_NO_OPT; char * name = NULL; - int name_len = 0; + size_t name_len = 0; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "O|ls", &mysql_link, mysqli_link_class_entry, &flags, &name, &name_len) == FAILURE) { return; @@ -2004,7 +2004,7 @@ PHP_FUNCTION(mysqli_stmt_send_long_data) zval *mysql_stmt; char *data; zend_long param_nr; - int data_len; + size_t data_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Ols", &mysql_stmt, mysqli_stmt_class_entry, ¶m_nr, &data, &data_len) == FAILURE) { return; @@ -2197,7 +2197,7 @@ PHP_FUNCTION(mysqli_select_db) MY_MYSQL *mysql; zval *mysql_link; char *dbname; - int dbname_len; + size_t dbname_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &dbname, &dbname_len) == FAILURE) { return; -- cgit v1.2.1 From 257ed4061ae88802538a6f22724c57fda052e36e Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Wed, 27 Aug 2014 17:31:24 +0200 Subject: 's' works with size_t round 2 --- ext/mysqli/mysqli_api.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index b8de1dfe85..10793060ae 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -325,7 +325,7 @@ PHP_FUNCTION(mysqli_stmt_bind_param) MY_STMT *stmt; zval *mysql_stmt; char *types; - int types_len; + size_t types_len; zend_ulong rc; /* calculate and check number of parameters */ @@ -1924,7 +1924,7 @@ PHP_FUNCTION(mysqli_real_query) MY_MYSQL *mysql; zval *mysql_link; char *query = NULL; - int query_len; + size_t query_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &query, &query_len) == FAILURE) { return; @@ -1954,7 +1954,7 @@ PHP_FUNCTION(mysqli_real_escape_string) { MY_MYSQL *mysql; zval *mysql_link = NULL; char *escapestr; - int escapestr_len; + size_t escapestr_len; zend_string *newstr; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_link, mysqli_link_class_entry, &escapestr, &escapestr_len) == FAILURE) { @@ -2238,7 +2238,7 @@ PHP_FUNCTION(mysqli_ssl_set) MY_MYSQL *mysql; zval *mysql_link; char *ssl_parm[5]; - int ssl_parm_len[5], i; + size_t ssl_parm_len[5], i; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Osssss", &mysql_link, mysqli_link_class_entry, &ssl_parm[0], &ssl_parm_len[0], &ssl_parm[1], &ssl_parm_len[1], &ssl_parm[2], &ssl_parm_len[2], &ssl_parm[3], &ssl_parm_len[3], &ssl_parm[4], &ssl_parm_len[4]) == FAILURE) { return; @@ -2460,7 +2460,7 @@ PHP_FUNCTION(mysqli_stmt_prepare) MY_STMT *stmt; zval *mysql_stmt; char *query; - int query_len; + size_t query_len; if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Os", &mysql_stmt, mysqli_stmt_class_entry, &query, &query_len) == FAILURE) { return; -- cgit v1.2.1 From aa161f07231753109ed83bda87dcf1fdb984381a Mon Sep 17 00:00:00 2001 From: Tjerk Meesters Date: Thu, 28 Aug 2014 16:39:35 +0800 Subject: Changed 'unsigned size_t' to 'size_t' --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 10793060ae..962cab600b 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -37,7 +37,7 @@ #if !defined(MYSQLI_USE_MYSQLND) /* {{{ mysqli_tx_cor_options_to_string */ -static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const unsigned size_t mode) +static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const size_t mode) { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { if (str->s && str->s->len) { -- cgit v1.2.1 From 0b048435736171732a57268899d7bdb14379cd90 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Thu, 28 Aug 2014 10:54:27 +0200 Subject: fix type --- ext/mysqli/mysqli_api.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 962cab600b..d8596c9620 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -37,7 +37,7 @@ #if !defined(MYSQLI_USE_MYSQLND) /* {{{ mysqli_tx_cor_options_to_string */ -static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const size_t mode) +static void mysqli_tx_cor_options_to_string(const MYSQL * const conn, smart_str * str, const uint32_t mode) { if (mode & TRANS_COR_AND_CHAIN && !(mode & TRANS_COR_AND_NO_CHAIN)) { if (str->s && str->s->len) { @@ -108,7 +108,7 @@ mysqli_escape_string_for_tx_name_in_comment(const char * const name TSRMLS_DC) /* }}} */ /* {{{ mysqli_commit_or_rollback_libmysql */ -static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const unsigned int mode, const char * const name TSRMLS_DC) +static int mysqli_commit_or_rollback_libmysql(MYSQL * conn, zend_bool commit, const uint32_t mode, const char * const name TSRMLS_DC) { int ret; smart_str tmp_str = {0}; -- cgit v1.2.1 From d0cb715373c3fbe9dc095378ec5ed8c71f799f67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Schl=C3=BCter?= Date: Fri, 19 Sep 2014 18:33:14 +0200 Subject: s/PHP 5/PHP 7/ --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index d8596c9620..eea6348034 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -1,6 +1,6 @@ /* +----------------------------------------------------------------------+ - | PHP Version 5 | + | PHP Version 7 | +----------------------------------------------------------------------+ | Copyright (c) 1997-2014 The PHP Group | +----------------------------------------------------------------------+ -- cgit v1.2.1 From e33f3d3b7c9a69fe069484045a27d282aa98b00e Mon Sep 17 00:00:00 2001 From: Nikita Popov Date: Sat, 20 Sep 2014 22:42:02 +0200 Subject: Move smart_str implementation into Zend/ So we can use it there as well... For now I've retained the zend_smart_str_public.h header, though it would probably be better to just move that one struct into zend_types.h. --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index eea6348034..4eff098999 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -30,7 +30,7 @@ #include "php_ini.h" #include "php_globals.h" #include "ext/standard/info.h" -#include "ext/standard/php_smart_str.h" +#include "zend_smart_str.h" #include "php_mysqli_structs.h" #include "mysqli_priv.h" -- cgit v1.2.1 From 946668d037c39b4149a43f155b1c8a365cbe7bf3 Mon Sep 17 00:00:00 2001 From: Anatol Belski Date: Mon, 13 Oct 2014 11:37:03 +0200 Subject: fix signed/unsigned mismatch warning --- ext/mysqli/mysqli_api.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'ext/mysqli/mysqli_api.c') diff --git a/ext/mysqli/mysqli_api.c b/ext/mysqli/mysqli_api.c index 4eff098999..69799729b7 100644 --- a/ext/mysqli/mysqli_api.c +++ b/ext/mysqli/mysqli_api.c @@ -791,7 +791,7 @@ PHP_FUNCTION(mysqli_data_seek) RETURN_FALSE; } - if (offset < 0 || offset >= mysql_num_rows(result)) { + if (offset < 0 || (uint64_t)offset >= mysql_num_rows(result)) { RETURN_FALSE; } -- cgit v1.2.1