mono/mono — pull request #233 by knocte (2012-03-02 12:53:12+00:00)
Title: corlib: List's enumerator should not mutate after being disposed

List.Enumerator is a struct so current Dispose() implementation was causing mutability on it.
Depending on this behaviour may seem overkill but some codebases may implement IEnumerator themselves by caching the enumerator of their initial readonly list.

Making Dispose() not do anything may seem incorrect, but it is not. For a good read about this, take a look at Stephen Cleary's first comment in:
http://social.msdn.microsoft.com/Forums/en/netfxbcl/thread/f5a59eac-4a3e-4417-99a8-83d4a6a9e41d

(Added NUnit tests that demonstrate the issue too.)

For a good example: this fix makes a simple HelloWorld System.Web.IHttpHandler work in Mono within the OpenRasta framework (at least tested with the stable branch).