summaryrefslogtreecommitdiff
path: root/ext/mysqlnd/mysqlnd.c
diff options
context:
space:
mode:
authorAndrey Hristov <andrey@php.net>2011-07-05 20:31:53 +0000
committerAndrey Hristov <andrey@php.net>2011-07-05 20:31:53 +0000
commit774e127a001e42a0081d2c6bcc181733a423a8b6 (patch)
treeea056a550c88348ca3f67714591524ad59a2c1e3 /ext/mysqlnd/mysqlnd.c
parent43edfb271091a3d75722ea782d04984b9fca558c (diff)
downloadphp-git-774e127a001e42a0081d2c6bcc181733a423a8b6.tar.gz
free data in case of failure in the callee not in the caller
Diffstat (limited to 'ext/mysqlnd/mysqlnd.c')
-rw-r--r--ext/mysqlnd/mysqlnd.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/ext/mysqlnd/mysqlnd.c b/ext/mysqlnd/mysqlnd.c
index 8a8f223109..9a6228945d 100644
--- a/ext/mysqlnd/mysqlnd.c
+++ b/ext/mysqlnd/mysqlnd.c
@@ -156,6 +156,7 @@ MYSQLND_METHOD(mysqlnd_conn, free_contents)(MYSQLND * conn TSRMLS_DC)
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 @@ MYSQLND_METHOD(mysqlnd_conn, connect)(MYSQLND * conn,
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 @@ err:
/* 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 @@ PHPAPI MYSQLND * mysqlnd_connect(MYSQLND * conn,
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);
}