diff options
| author | Ilia Alshanetsky <iliaa@php.net> | 2004-05-25 14:12:15 +0000 |
|---|---|---|
| committer | Ilia Alshanetsky <iliaa@php.net> | 2004-05-25 14:12:15 +0000 |
| commit | ce3891347fc1e6b0aefca8c705ea0ae8f5697c1a (patch) | |
| tree | fbe575062feefce2a13fbd5f8bc205a857070453 | |
| parent | 6304e5d7cb108d6d528b1b54e65b247a1dbf98f1 (diff) | |
| download | php-git-ce3891347fc1e6b0aefca8c705ea0ae8f5697c1a.tar.gz | |
Fixed memory leak.
| -rwxr-xr-x | ext/pdo/pdo_dbh.c | 11 | ||||
| -rw-r--r-- | ext/pdo_pgsql/pgsql_driver.c | 19 |
2 files changed, 22 insertions, 8 deletions
diff --git a/ext/pdo/pdo_dbh.c b/ext/pdo/pdo_dbh.c index 2616af500a..b61200d613 100755 --- a/ext/pdo/pdo_dbh.c +++ b/ext/pdo/pdo_dbh.c @@ -657,6 +657,17 @@ static void pdo_dbh_free_storage(zend_object *object TSRMLS_DC) } dbh->methods->closer(dbh TSRMLS_CC); + + if (dbh->data_source) { + efree((char *)dbh->data_source); + } + if (dbh->username) { + efree(dbh->username); + } + if (dbh->password) { + efree(dbh->password); + } + efree(dbh); } diff --git a/ext/pdo_pgsql/pgsql_driver.c b/ext/pdo_pgsql/pgsql_driver.c index 95ceff294d..334bf2e016 100644 --- a/ext/pdo_pgsql/pgsql_driver.c +++ b/ext/pdo_pgsql/pgsql_driver.c @@ -83,14 +83,17 @@ static int pdo_pgsql_fetch_error_func(pdo_dbh_t *dbh, pdo_stmt_t *stmt, zval *in static int pgsql_handle_closer(pdo_dbh_t *dbh TSRMLS_DC) /* {{{ */ { pdo_pgsql_db_handle *H = (pdo_pgsql_db_handle *)dbh->driver_data; - - if (H->server) { - PQfinish(H->server); - H->server = NULL; - } - if (H->einfo.errmsg) { - efree(H->einfo.errmsg); - H->einfo.errmsg = NULL; + if (H) { + if (H->server) { + PQfinish(H->server); + H->server = NULL; + } + if (H->einfo.errmsg) { + efree(H->einfo.errmsg); + H->einfo.errmsg = NULL; + } + pefree(H, dbh->is_persistent); + H = NULL; } return 0; } |
