]> granicus.if.org Git - php/commitdiff
Fixed memory leak with persistent connections
authorIlia Alshanetsky <iliaa@php.net>
Mon, 7 Aug 2006 17:32:13 +0000 (17:32 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Mon, 7 Aug 2006 17:32:13 +0000 (17:32 +0000)
ext/pdo/pdo_dbh.c

index e98188fb14b6360f8afaebe02d3925cb22aaece3..2b0596fd6346187c0614751fcd208d01cc9a23e5 100755 (executable)
@@ -342,7 +342,9 @@ static PHP_METHOD(PDO, dbh_constructor)
                        /* switch over to the persistent one */
                        dbh = pdbh;
                        zend_object_store_set_object(object, dbh TSRMLS_CC);
-                       dbh->refcount++;
+                       if (!call_factory) {
+                               dbh->refcount++;
+                       }
                }
 
                if (hashkey) {
@@ -1399,6 +1401,10 @@ static void dbh_free(pdo_dbh_t *dbh TSRMLS_DC)
                pefree(dbh->password, dbh->is_persistent);
        }
        
+       if (dbh->persistent_id) {
+               pefree((char *)dbh->persistent_id, dbh->is_persistent);
+       }
+
        if (dbh->def_stmt_ctor_args) {
                zval_ptr_dtor(&dbh->def_stmt_ctor_args);
        }