Author: leszek
Date: 2006-09-13 04:38:24 -0400 (Wed, 13 Sep 2006)
New Revision: 65345
Modified:
trunk/mcs/class/System.Data.OracleClient/ChangeLog
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommand.cs
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
Log:
Fix for bug 77592 (memory leak in OracleParameter)
Modified: trunk/mcs/class/System.Data.OracleClient/ChangeLog
===================================================================
--- trunk/mcs/class/System.Data.OracleClient/ChangeLog 2006-09-13 08:27:15 UTC
(rev 65344)
+++ trunk/mcs/class/System.Data.OracleClient/ChangeLog 2006-09-13 08:38:24 UTC
(rev 65345)
@@ -1,3 +1,8 @@
+2006-09-13 Leszek Ciesielski <[EMAIL PROTECTED]>
+
+ * OracleCommand.cs
+ * OracleParameter.cs : fix for bug 77592
+
2006-09-12 Boris Kirzner <[EMAIL PROTECTED]>
* run-tests.test.bat: rework logging for TARGET_JVM tests.
Modified:
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommand.cs
===================================================================
---
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommand.cs
2006-09-13 08:27:15 UTC (rev 65344)
+++
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleCommand.cs
2006-09-13 08:38:24 UTC (rev 65345)
@@ -577,6 +577,15 @@
preparedStatement = statement;
}
+ protected override void Dispose (bool disposing)
+ {
+ if (disposing)
+ if (Parameters.Count > 0)
+ foreach (OracleParameter parm in
Parameters)
+ parm.FreeHandle ();
+ base.Dispose (disposing);
+ }
+
#endregion // Methods
}
}
Modified:
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
===================================================================
---
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
2006-09-13 08:27:15 UTC (rev 65344)
+++
trunk/mcs/class/System.Data.OracleClient/System.Data.OracleClient/OracleParameter.cs
2006-09-13 08:38:24 UTC (rev 65345)
@@ -245,7 +245,7 @@
}
}
- internal void Bind (OciStatementHandle statement,
OracleConnection con, uint pos)
+ internal void Bind (OciStatementHandle statement,
OracleConnection con, uint pos)
{
connection = con;
@@ -776,6 +776,7 @@
private void SetOracleType (OracleType type)
{
+ FreeHandle ();
string exception = String.Format ("No mapping exists
from OracleType {0} to a known DbType.", type);
switch (type) {
case OracleType.BFile:
@@ -954,7 +955,7 @@
FreeHandle ();
}
- private void FreeHandle ()
+ internal void FreeHandle ()
{
switch (ociType) {
case OciDataType.Clob:
@@ -963,7 +964,12 @@
break;
case OciDataType.Raw:
Marshal.FreeHGlobal (bindValue);
- break;
+ break;
+ case OciDataType.TimeStamp:
+ break;
+ default:
+ Marshal.FreeHGlobal (bindOutValue);
+ break;
}
bindOutValue = IntPtr.Zero;
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches