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

Reply via email to