andrey Thu, 22 Oct 2009 17:07:55 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=289858
Log: Have the lengths also to skip many calls to strlen Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h U php/php-src/trunk/ext/mysqlnd/mysqlnd.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c 2009-10-22 16:17:41 UTC (rev 289857) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c 2009-10-22 17:07:55 UTC (rev 289858) @@ -174,6 +174,11 @@ mnd_pefree(conn->passwd, pers); conn->passwd = NULL; } + if (conn->connect_or_select_db) { + DBG_INF("Freeing connect_or_select_db"); + mnd_pefree(conn->connect_or_select_db, pers); + conn->connect_or_select_db = NULL; + } if (conn->unix_socket) { DBG_INF("Freeing unix_socket"); mnd_pefree(conn->unix_socket, pers); @@ -588,6 +593,7 @@ } else { conn->scheme = transport; } + conn->scheme_len = strlen(conn->scheme); DBG_INF(conn->scheme); conn->net.stream = php_stream_xport_create(conn->scheme, transport_len, streams_options, streams_flags, hashed_details, @@ -726,13 +732,18 @@ CONN_SET_STATE(conn, CONN_READY); conn->user = pestrdup(user, conn->persistent); + conn->user_len = strlen(conn->user); conn->passwd = pestrndup(passwd, passwd_len, conn->persistent); + conn->passwd_len = passwd_len; conn->port = port; + conn->connect_or_select_db = pestrndup(db, db_len, conn->persistent); + conn->connect_or_select_db_len = db_len; if (!unix_socket) { char *p; conn->host = pestrdup(host, conn->persistent); + conn->host_len = strlen(conn->host); spprintf(&p, 0, "%s via TCP/IP", conn->host); if (conn->persistent) { conn->host_info = pestrdup(p, 1); @@ -742,6 +753,7 @@ } } else { conn->unix_socket = pestrdup(socket, conn->persistent); + conn->unix_socket_len = strlen(conn->unix_socket); conn->host_info = pestrdup("Localhost via UNIX socket", conn->persistent); } conn->client_flag = auth_packet->client_flags; @@ -1282,7 +1294,12 @@ a protocol of giving back -1. Thus we have to follow it :( */ SET_ERROR_AFF_ROWS(conn); - + if (ret == PASS) { + if (conn->connect_or_select_db) { + pefree(conn->connect_or_select_db, conn->persistent); + } + conn->connect_or_select_db = pestrndup(db, db_len, conn->persistent); + } DBG_RETURN(ret); } /* }}} */ Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h 2009-10-22 16:17:41 UTC (rev 289857) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_structs.h 2009-10-22 17:07:55 UTC (rev 289858) @@ -393,17 +393,23 @@ /* Information related */ char *host; + unsigned int host_len; char *unix_socket; + unsigned int unix_socket_len; char *user; + unsigned int user_len; char *passwd; - unsigned int *passwd_len; + unsigned int passwd_len; char *scheme; + unsigned int scheme_len; uint64_t thread_id; char *server_version; char *host_info; unsigned char *scramble; const MYSQLND_CHARSET *charset; const MYSQLND_CHARSET *greet_charset; + char *connect_or_select_db; + unsigned int connect_or_select_db_len; MYSQLND_INFILE infile; unsigned int protocol_version; unsigned long max_packet_size; Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2009-10-22 16:17:41 UTC (rev 289857) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd.c 2009-10-22 17:07:55 UTC (rev 289858) @@ -174,6 +174,11 @@ mnd_pefree(conn->passwd, pers); conn->passwd = NULL; } + if (conn->connect_or_select_db) { + DBG_INF("Freeing connect_or_select_db"); + mnd_pefree(conn->connect_or_select_db, pers); + conn->connect_or_select_db = NULL; + } if (conn->unix_socket) { DBG_INF("Freeing unix_socket"); mnd_pefree(conn->unix_socket, pers); @@ -588,6 +593,7 @@ } else { conn->scheme = transport; } + conn->scheme_len = strlen(conn->scheme); DBG_INF(conn->scheme); conn->net.stream = php_stream_xport_create(conn->scheme, transport_len, streams_options, streams_flags, hashed_details, @@ -726,13 +732,18 @@ CONN_SET_STATE(conn, CONN_READY); conn->user = pestrdup(user, conn->persistent); + conn->user_len = strlen(conn->user); conn->passwd = pestrndup(passwd, passwd_len, conn->persistent); + conn->passwd_len = passwd_len; conn->port = port; + conn->connect_or_select_db = pestrndup(db, db_len, conn->persistent); + conn->connect_or_select_db_len = db_len; if (!unix_socket) { char *p; conn->host = pestrdup(host, conn->persistent); + conn->host_len = strlen(conn->host); spprintf(&p, 0, "%s via TCP/IP", conn->host); if (conn->persistent) { conn->host_info = pestrdup(p, 1); @@ -742,6 +753,7 @@ } } else { conn->unix_socket = pestrdup(socket, conn->persistent); + conn->unix_socket_len = strlen(conn->unix_socket); conn->host_info = pestrdup("Localhost via UNIX socket", conn->persistent); } conn->client_flag = auth_packet->client_flags; @@ -1282,7 +1294,12 @@ a protocol of giving back -1. Thus we have to follow it :( */ SET_ERROR_AFF_ROWS(conn); - + if (ret == PASS) { + if (conn->connect_or_select_db) { + pefree(conn->connect_or_select_db, conn->persistent); + } + conn->connect_or_select_db = pestrndup(db, db_len, conn->persistent); + } DBG_RETURN(ret); } /* }}} */ Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2009-10-22 16:17:41 UTC (rev 289857) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_structs.h 2009-10-22 17:07:55 UTC (rev 289858) @@ -393,17 +393,23 @@ /* Information related */ char *host; + unsigned int host_len; char *unix_socket; + unsigned int unix_socket_len; char *user; + unsigned int user_len; char *passwd; - unsigned int *passwd_len; + unsigned int passwd_len; char *scheme; + unsigned int scheme_len; uint64_t thread_id; char *server_version; char *host_info; unsigned char *scramble; const MYSQLND_CHARSET *charset; const MYSQLND_CHARSET *greet_charset; + char *connect_or_select_db; + unsigned int connect_or_select_db_len; MYSQLND_INFILE infile; unsigned int protocol_version; unsigned long max_packet_size;
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php