Browse Source

Nullify parent when cloning the parameters

svn path=/trunk/mcs/; revision=69624
Konstantin Triger 19 years ago
parent
commit
26198822f2

+ 4 - 2
mcs/class/System.Data/System.Data.ProviderBase.jvm/AbstractDBParameter.cs

@@ -263,8 +263,10 @@ namespace System.Data.ProviderBase
 		protected internal abstract void SetSpecialFeatures(ResultSet res);
 		
 		public virtual object Clone()
-		{
-			return MemberwiseClone();
+		{
+			AbstractDbParameter other = (AbstractDbParameter) MemberwiseClone ();
+			other._parent = null;
+			return other;
 		}
 
 		protected internal abstract int JdbcTypeFromProviderType();

+ 10 - 0
mcs/class/System.Data/Test/ProviderTests/System.Data.OleDb.jvm/OleDbParameterCollection/OleDbParameterCollection_Add.cs

@@ -82,5 +82,15 @@ namespace MonoTests.System.Data.OleDb
 			catch(Exception ex){exp = ex;}
 			finally{EndCase(exp); exp = null;}
 		}
+		
+		[Test]
+		public void TestAddCloned()
+		{
+			OleDbCommand c = new OleDbCommand ();
+			OleDbParameter p = c.Parameters.Add ("SDF", OleDbType.BigInt);
+			OleDbCommand c1 = new OleDbCommand ();
+			c1.Parameters.Add ((OleDbParameter) ((ICloneable) p).Clone ());
+			Assert.AreEqual(1, c1.Parameters.Count, "#01");
+		}
 	}
 }