}
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);
}
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;
}