Selaa lähdekoodia

Fix the enumerator initialization problem

svn path=/trunk/mcs/; revision=52269
Konstantin Triger 20 vuotta sitten
vanhempi
sitoutus
e5ce101e03

+ 4 - 0
mcs/class/System.Data/Mono.Data.SqlExpressions/ChangeLog

@@ -1,3 +1,7 @@
+2005-10-26 Konstantin Triger <[email protected]>
+
+	* In.cs: Fix the enumerator initialization problem.
+
 2005-10-21 Senganal T <[email protected]>
 
 	* Numeric.cs :

+ 13 - 11
mcs/class/System.Data/Mono.Data.SqlExpressions/In.cs

@@ -54,15 +54,17 @@ namespace Mono.Data.SqlExpressions {
 			In other = (In) obj;
 			if (other.set.Count != set.Count)
 				return false;	
-	
-			IEnumerator enumerator = set.GetEnumerator ();
-			IEnumerator oenumerator = other.set.GetEnumerator ();
 
-			do {
-				if (!oenumerator.Current.Equals (enumerator.Current))
+			for (int i = 0, count = set.Count; i < count; i++) {
+				object o1 = set[i];
+				object o2 = other.set[i];
+
+				if (o1 == null && o2 != null)
+					return false;
+
+				if (!o1.Equals(o2))
 					return false;
 			}
-			while (enumerator.MoveNext () || oenumerator.MoveNext ());
 
 			return true;
 		}
@@ -70,12 +72,12 @@ namespace Mono.Data.SqlExpressions {
 		public override int GetHashCode()
 		{
 			int hashCode = base.GetHashCode ();
-			IEnumerator enumerator = set.GetEnumerator ();
-
-			do {
-				hashCode ^= enumerator.Current.GetHashCode ();
+			for (int i = 0, count = set.Count; i < count; i++) {
+				object o = set[i];
+				if (o != null)
+					hashCode ^= o.GetHashCode();
 			}
-			while (enumerator.MoveNext ());
+
 			return hashCode;
 		}