andrey                                   Tue, 05 Jul 2011 20:31:53 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=312953

Log:
free data in case of failure in the callee not in the caller

Changed paths:
    U   php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c
    U   php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c
    U   php/php-src/trunk/ext/mysqlnd/mysqlnd.c

Modified: php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c  2011-07-05 20:10:45 UTC 
(rev 312952)
+++ php/php-src/branches/PHP_5_3/ext/mysqlnd/mysqlnd.c  2011-07-05 20:31:53 UTC 
(rev 312953)
@@ -156,6 +156,7 @@
                mnd_pefree(conn->unix_socket, pers);
                conn->unix_socket = NULL;
        }
+       DBG_INF_FMT("scheme=%s", conn->scheme);
        if (conn->scheme) {
                DBG_INF("Freeing scheme");
                mnd_pefree(conn->scheme, pers);
@@ -635,7 +636,7 @@
                        SET_OOM_ERROR(conn->error_info);
                        goto err; /* OOM */
                }
-               DBG_INF_FMT("transport=%s", transport);
+               DBG_INF_FMT("transport=%s conn->scheme=%s", transport, 
conn->scheme);
                conn->scheme = mnd_pestrndup(transport, transport_len, 
conn->persistent);
                conn->scheme_len = transport_len;
                efree(transport); /* allocated by spprintf */
@@ -836,7 +837,7 @@
                /* no mnd_ since we don't allocate it */
                efree(errstr);
        }
-
+       conn->m->free_contents(conn TSRMLS_CC);
        MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_FAILURE);

        DBG_RETURN(FAIL);
@@ -877,9 +878,6 @@
                          object - we are free to kill it!
                        */
                        conn->m->dtor(conn TSRMLS_CC);
-               } else {
-                       /* This will also close conn->net->stream if it has 
been opened */
-                       conn->m->free_contents(conn TSRMLS_CC);
                }
                DBG_RETURN(NULL);
        }

Modified: php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c
===================================================================
--- php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c  2011-07-05 20:10:45 UTC 
(rev 312952)
+++ php/php-src/branches/PHP_5_4/ext/mysqlnd/mysqlnd.c  2011-07-05 20:31:53 UTC 
(rev 312953)
@@ -157,6 +157,7 @@
                mnd_pefree(conn->unix_socket, pers);
                conn->unix_socket = NULL;
        }
+       DBG_INF_FMT("scheme=%s", conn->scheme);
        if (conn->scheme) {
                mnd_pefree(conn->scheme, pers);
                conn->scheme = NULL;
@@ -717,7 +718,7 @@
                        SET_OOM_ERROR(conn->error_info);
                        goto err; /* OOM */
                }
-               DBG_INF_FMT("transport=%s", transport);
+               DBG_INF_FMT("transport=%s conn->scheme=%s", transport, 
conn->scheme);
                conn->scheme = mnd_pestrndup(transport, transport_len, 
conn->persistent);
                conn->scheme_len = transport_len;
                mnd_sprintf_free(transport);
@@ -936,7 +937,7 @@
                /* no mnd_ since we don't allocate it */
                efree(errstr);
        }
-
+       conn->m->free_contents(conn TSRMLS_CC);
        MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_FAILURE);

        DBG_RETURN(FAIL);
@@ -977,9 +978,6 @@
                          object - we are free to kill it!
                        */
                        conn->m->dtor(conn TSRMLS_CC);
-               } else {
-                       /* This will also close conn->net->stream if it has 
been opened */
-                       conn->m->free_contents(conn TSRMLS_CC);
                }
                DBG_RETURN(NULL);
        }

Modified: php/php-src/trunk/ext/mysqlnd/mysqlnd.c
===================================================================
--- php/php-src/trunk/ext/mysqlnd/mysqlnd.c     2011-07-05 20:10:45 UTC (rev 
312952)
+++ php/php-src/trunk/ext/mysqlnd/mysqlnd.c     2011-07-05 20:31:53 UTC (rev 
312953)
@@ -157,6 +157,7 @@
                mnd_pefree(conn->unix_socket, pers);
                conn->unix_socket = NULL;
        }
+       DBG_INF_FMT("scheme=%s", conn->scheme);
        if (conn->scheme) {
                mnd_pefree(conn->scheme, pers);
                conn->scheme = NULL;
@@ -717,7 +718,7 @@
                        SET_OOM_ERROR(conn->error_info);
                        goto err; /* OOM */
                }
-               DBG_INF_FMT("transport=%s", transport);
+               DBG_INF_FMT("transport=%s conn->scheme=%s", transport, 
conn->scheme);
                conn->scheme = mnd_pestrndup(transport, transport_len, 
conn->persistent);
                conn->scheme_len = transport_len;
                mnd_sprintf_free(transport);
@@ -936,7 +937,7 @@
                /* no mnd_ since we don't allocate it */
                efree(errstr);
        }
-
+       conn->m->free_contents(conn TSRMLS_CC);
        MYSQLND_INC_CONN_STATISTIC(conn->stats, STAT_CONNECT_FAILURE);

        DBG_RETURN(FAIL);
@@ -977,9 +978,6 @@
                          object - we are free to kill it!
                        */
                        conn->m->dtor(conn TSRMLS_CC);
-               } else {
-                       /* This will also close conn->net->stream if it has 
been opened */
-                       conn->m->free_contents(conn TSRMLS_CC);
                }
                DBG_RETURN(NULL);
        }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to