From b32340e07cac0304d9df7f7dce7199952981f33d Mon Sep 17 00:00:00 2001 From: inga-lovinde <52715130+inga-lovinde@users.noreply.github.com> Date: Sat, 3 Jul 2010 18:50:00 +0000 Subject: [PATCH] Fixed memory leaks in DBConnection --- MySQLConnector/Connection.cs | 6 ++++++ MySQLConnector/Transaction.cs | 3 +++ 2 files changed, 9 insertions(+) diff --git a/MySQLConnector/Connection.cs b/MySQLConnector/Connection.cs index 5e73467..06734a8 100644 --- a/MySQLConnector/Connection.cs +++ b/MySQLConnector/Connection.cs @@ -306,6 +306,12 @@ namespace FLocal.MySQLConnector { } } + internal void RemoveTransaction(Transaction transaction) { + lock(this) { + this.transactions.Remove(transaction); + } + } + public void Dispose() { lock(this) { foreach(Transaction transaction in this.transactions) { diff --git a/MySQLConnector/Transaction.cs b/MySQLConnector/Transaction.cs index dbd17a3..774d311 100644 --- a/MySQLConnector/Transaction.cs +++ b/MySQLConnector/Transaction.cs @@ -8,6 +8,7 @@ using System.Data.Common; namespace FLocal.MySQLConnector { class Transaction : Core.DB.Transaction { + internal Connection connection; internal DbConnection sqlconnection; internal DbTransaction sqltransaction; @@ -17,6 +18,7 @@ namespace FLocal.MySQLConnector { } public Transaction(Connection connection, System.Data.IsolationLevel iso) : base() { + this.connection = connection; this.sqlconnection = connection.createConnection(); try { if(connection.traits.supportsIsolationLevel()) { @@ -50,6 +52,7 @@ namespace FLocal.MySQLConnector { this.sqlconnection.Close(); this.sqlconnection.Dispose(); this.finalizedImpl = true; + this.connection.RemoveTransaction(this); } }