tony2001 Mon Oct 3 19:27:32 2005 EDT Modified files: (Branch: PHP_5_1) /php-src/ext/pdo pdo_dbh.c Log: free cls_methods correctly and fix segfault on shutdown (no bug entry and MFB, though..) http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_dbh.c?r1=1.82.2.10&r2=1.82.2.11&ty=u Index: php-src/ext/pdo/pdo_dbh.c diff -u php-src/ext/pdo/pdo_dbh.c:1.82.2.10 php-src/ext/pdo/pdo_dbh.c:1.82.2.11 --- php-src/ext/pdo/pdo_dbh.c:1.82.2.10 Sun Oct 2 23:54:06 2005 +++ php-src/ext/pdo/pdo_dbh.c Mon Oct 3 19:27:26 2005 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_dbh.c,v 1.82.2.10 2005/10/03 03:54:06 iliaa Exp $ */ +/* $Id: pdo_dbh.c,v 1.82.2.11 2005/10/03 23:27:26 tony2001 Exp $ */ /* The PDO Database Handle Class */ @@ -1337,6 +1337,8 @@ static void dbh_free(pdo_dbh_t *dbh TSRMLS_DC) { + int i; + if (--dbh->refcount) return; @@ -1357,8 +1359,11 @@ if (dbh->def_stmt_ctor_args) { zval_ptr_dtor(&dbh->def_stmt_ctor_args); } - if (dbh->cls_methods) { - zend_hash_destroy(&dbh->cls_methods); + + for (i = 0; i < PDO_DBH_DRIVER_METHOD_KIND__MAX; i++) { + if (dbh->cls_methods[i]) { + zend_hash_destroy(dbh->cls_methods[i]); + } } pefree(dbh, dbh->is_persistent);
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php