From d92f3c1ee6ad0d1b095a6f8d7cbc23e1670ae42c Mon Sep 17 00:00:00 2001 From: jbevain Date: Thu, 22 Jan 2009 15:05:35 +0000 Subject: [PATCH] 2009-01-22 Jb Evain * Enumerable.cs (SequenceEqual): make sure we dispose enumerators. git-svn-id: svn+ssh://mono-cvs.ximian.com/source/trunk/mcs@124212 e3ebcda4-bce8-0310-ba0a-eca2169e7518 --- class/System.Core/System.Linq/ChangeLog | 4 ++++ class/System.Core/System.Linq/Enumerable.cs | 20 +++++++++++--------- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/class/System.Core/System.Linq/ChangeLog b/class/System.Core/System.Linq/ChangeLog index 83dd763af2..b3c572ea65 100644 --- a/class/System.Core/System.Linq/ChangeLog +++ b/class/System.Core/System.Linq/ChangeLog @@ -1,5 +1,9 @@ 2009-01-22 Jb Evain + * Enumerable.cs (SequenceEqual): make sure we dispose enumerators. + +2009-01-22 Jb Evain + * Enumerable.cs: optimize Last for lists. 2009-01-15 Jb Evain diff --git a/class/System.Core/System.Linq/Enumerable.cs b/class/System.Core/System.Linq/Enumerable.cs index 9ab384f3f4..db8ae017ed 100644 --- a/class/System.Core/System.Linq/Enumerable.cs +++ b/class/System.Core/System.Linq/Enumerable.cs @@ -2251,18 +2251,20 @@ namespace System.Linq if (comparer == null) comparer = EqualityComparer.Default; - var first_enumerator = first.GetEnumerator (); - var second_enumerator = second.GetEnumerator (); + using (var first_enumerator = first.GetEnumerator ()) { + using (var second_enumerator = second.GetEnumerator ()) { - while (first_enumerator.MoveNext ()) { - if (!second_enumerator.MoveNext ()) - return false; + while (first_enumerator.MoveNext ()) { + if (!second_enumerator.MoveNext ()) + return false; - if (!comparer.Equals (first_enumerator.Current, second_enumerator.Current)) - return false; - } + if (!comparer.Equals (first_enumerator.Current, second_enumerator.Current)) + return false; + } - return !second_enumerator.MoveNext (); + return !second_enumerator.MoveNext (); + } + } } #endregion -- 2.11.4.GIT