diff options
author | Andrey Hristov <andrey@php.net> | 2010-04-01 12:46:21 +0000 |
---|---|---|
committer | Andrey Hristov <andrey@php.net> | 2010-04-01 12:46:21 +0000 |
commit | a712d9cefb1015803e22d76110edd3290226544d (patch) | |
tree | 6141736c9d4cbe91dcebbe9748c31b408fd6dba7 /ext/mysqlnd/mysqlnd_net.c | |
parent | c2e16d3c5ba88fc6456d883cb3ba840adfbee711 (diff) | |
download | php-git-a712d9cefb1015803e22d76110edd3290226544d.tar.gz |
Better fix for bug #51347 mysqli_close / connection memory leak
Diffstat (limited to 'ext/mysqlnd/mysqlnd_net.c')
-rw-r--r-- | ext/mysqlnd/mysqlnd_net.c | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/ext/mysqlnd/mysqlnd_net.c b/ext/mysqlnd/mysqlnd_net.c index 7db43d3ea5..41e1bd7fc1 100644 --- a/ext/mysqlnd/mysqlnd_net.c +++ b/ext/mysqlnd/mysqlnd_net.c @@ -159,6 +159,14 @@ MYSQLND_METHOD(mysqlnd_net, connect)(MYSQLND_NET * net, const char * const schem #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 @@ mysqlnd_net_free(MYSQLND_NET * const net TSRMLS_DC) 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) { |