summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorIlia Alshanetsky <iliaa@php.net>2004-05-25 14:12:15 +0000
committerIlia Alshanetsky <iliaa@php.net>2004-05-25 14:12:15 +0000
commitce3891347fc1e6b0aefca8c705ea0ae8f5697c1a (patch)
treefbe575062feefce2a13fbd5f8bc205a857070453 /ext
parent6304e5d7cb108d6d528b1b54e65b247a1dbf98f1 (diff)
downloadphp-git-ce3891347fc1e6b0aefca8c705ea0ae8f5697c1a.tar.gz
Fixed memory leak.
Diffstat (limited to 'ext')
-rwxr-xr-xext/pdo/pdo_dbh.c11
-rw-r--r--ext/pdo_pgsql/pgsql_driver.c19
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;
}