Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Safar <marek.safar@gmail.com>2009-08-07 14:44:50 +0400
committerMarek Safar <marek.safar@gmail.com>2009-08-07 14:44:50 +0400
commited47ca25ea569943bcfd4800a515196482bc170e (patch)
tree0aa649fc13d6efc0a74864d169c63f087cf2289b
parentc1be496ffb859a36e75be5ae39eab5e6b11fb2e4 (diff)
2009-08-07 Marek Safar <marek.safar@gmail.com>
* Enumerable.cs (Skip): Optimized and fixed int.MaxValue overflow. svn path=/trunk/mcs/; revision=139558
-rw-r--r--mcs/class/System.Core/System.Linq/ChangeLog4
-rw-r--r--mcs/class/System.Core/System.Linq/Enumerable.cs15
2 files changed, 14 insertions, 5 deletions
diff --git a/mcs/class/System.Core/System.Linq/ChangeLog b/mcs/class/System.Core/System.Linq/ChangeLog
index 71b371c2d88..9f36ab4f462 100644
--- a/mcs/class/System.Core/System.Linq/ChangeLog
+++ b/mcs/class/System.Core/System.Linq/ChangeLog
@@ -1,3 +1,7 @@
+2009-08-07 Marek Safar <marek.safar@gmail.com>
+
+ * Enumerable.cs (Skip): Optimized and fixed int.MaxValue overflow.
+
2009-07-20 Jb Evain <jbevain@novell.com>
* Lookup.cs: avoid a double dictionary lookup on the indexer.
diff --git a/mcs/class/System.Core/System.Linq/Enumerable.cs b/mcs/class/System.Core/System.Linq/Enumerable.cs
index d7c07b894a3..11ce43f2bed 100644
--- a/mcs/class/System.Core/System.Linq/Enumerable.cs
+++ b/mcs/class/System.Core/System.Linq/Enumerable.cs
@@ -1726,12 +1726,17 @@ namespace System.Linq
static IEnumerable<TSource> CreateSkipIterator<TSource> (IEnumerable<TSource> source, int count)
{
- int i = 0;
- foreach (var element in source) {
- if (i++ < count)
- continue;
+ var enumerator = source.GetEnumerator ();
+ try {
+ while (count-- > 0)
+ if (!enumerator.MoveNext ())
+ yield break;
- yield return element;
+ while (enumerator.MoveNext ())
+ yield return enumerator.Current;
+
+ } finally {
+ enumerator.Dispose ();
}
}