andrey Thu, 01 Apr 2010 12:46:21 +0000 Revision: http://svn.php.net/viewvc?view=revision&revision=297274
Log: Better fix for bug #51347 mysqli_close / connection memory leak Bug: http://bugs.php.net/51347 (Open) mysqli_close / connection memory leak Changed paths: U php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c U php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c =================================================================== --- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c 2010-04-01 12:08:55 UTC (rev 297273) +++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd_net.c 2010-04-01 12:46:21 UTC (rev 297274) @@ -159,6 +159,14 @@ #endif efree(hashed_details); } + /* + Streams are not meant for C extensions! Thus we need a hack. Every connected stream will + be registered as resource (in EG(regular_list). So far, so good. However, it won't be + unregistered till the script ends. So, we need to take care of that. + */ + net->stream->in_free = 1; + zend_hash_index_del(&EG(regular_list), net->stream->rsrc_id); + net->stream->in_free = 0; if (!net->options.timeout_read) { /* should always happen because read_timeout cannot be set via API */ @@ -703,15 +711,6 @@ mnd_pefree(net->cmd_buffer.buffer, pers); net->cmd_buffer.buffer = NULL; } - /* - Streams are not meant for C extensions! Thus we need a hack. Every connected stream will - be registered as resource (in EG(regular_list). So far, so good. However, it won't be - unregistered till the script ends. So, we need to take care of that. - */ - net->stream->in_free = 1; - zend_hash_index_del(&EG(regular_list), net->stream->rsrc_id); - net->stream->in_free = 0; - if (net->stream) { DBG_INF_FMT("Freeing stream. abstract=%p", net->stream->abstract); if (pers) { Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c =================================================================== --- php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c 2010-04-01 12:08:55 UTC (rev 297273) +++ php/php-src/trunk/ext/mysqlnd/mysqlnd_net.c 2010-04-01 12:46:21 UTC (rev 297274) @@ -159,6 +159,14 @@ #endif efree(hashed_details); } + /* + Streams are not meant for C extensions! Thus we need a hack. Every connected stream will + be registered as resource (in EG(regular_list). So far, so good. However, it won't be + unregistered till the script ends. So, we need to take care of that. + */ + net->stream->in_free = 1; + zend_hash_index_del(&EG(regular_list), net->stream->rsrc_id); + net->stream->in_free = 0; if (!net->options.timeout_read) { /* should always happen because read_timeout cannot be set via API */ @@ -703,15 +711,6 @@ mnd_pefree(net->cmd_buffer.buffer, pers); net->cmd_buffer.buffer = NULL; } - /* - Streams are not meant for C extensions! Thus we need a hack. Every connected stream will - be registered as resource (in EG(regular_list). So far, so good. However, it won't be - unregistered till the script ends. So, we need to take care of that. - */ - net->stream->in_free = 1; - zend_hash_index_del(&EG(regular_list), net->stream->rsrc_id); - net->stream->in_free = 0; - if (net->stream) { DBG_INF_FMT("Freeing stream. abstract=%p", net->stream->abstract); if (pers) {
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php