Browse Source

Make table name comparison dataset locale specific. Fixes #7899

Marek Safar 12 years ago
parent
commit
dbdab197a7

+ 2 - 2
mcs/class/System.Data/System.Data/DataTableCollection.cs

@@ -274,9 +274,9 @@ namespace System.Data
 			int count = 0, match = -1;
 			for (int i = start; i < List.Count; i++) {
 				String name2 = ((DataTable) List[i]).TableName;
-				if (String.Compare (name, name2, false) == 0)
+				if (String.Compare (name, name2, false, dataSet.Locale) == 0)
 					return i;
-				if (String.Compare (name, name2, true) == 0) {
+				if (String.Compare (name, name2, true, dataSet.Locale) == 0) {
 					match = i;
 					count++;
 				}

+ 12 - 0
mcs/class/System.Data/Test/System.Data/DataSetTest2.cs

@@ -37,6 +37,7 @@ using MonoTests.System.Data.Utils;
 using System.Xml;
 using System.Runtime.Serialization;
 using System.Runtime.Serialization.Formatters.Binary;
+using System.Globalization;
 
 namespace MonoTests_System.Data
 {
@@ -985,6 +986,17 @@ namespace MonoTests_System.Data
 			Assert.AreEqual(culInfo , ds.Locale , "DS157");
 		}
 
+		[Test]
+		[SetCulture ("cs-CZ")]
+		public void DataSetSpecificCulture ()
+		{			
+			var ds = new DataSet() ;
+			ds.Locale = CultureInfo.GetCultureInfo (1033);
+			var dt = ds.Tables.Add ("machine");
+			dt.Locale = ds.Locale;
+			Assert.AreSame (dt, ds.Tables["MACHINE"]);
+		}		
+
 		[Test] public void MergeFailed()
 		{
 			EventRaised = false;