Don't allocate anonymous method container when importing event fields
authorMarek Safar <marek.safar@gmail.com>
Thu, 27 Jan 2011 08:55:17 +0000 (08:55 +0000)
committerMarek Safar <marek.safar@gmail.com>
Thu, 27 Jan 2011 09:05:09 +0000 (09:05 +0000)
mcs/mcs/import.cs

index b85f6b07bb4d8eb5e90f95ae5d033bb852b9a08b..49ece787beb35980b036d1b844cd2fd5d7fae109 100644 (file)
@@ -1968,13 +1968,19 @@ namespace Mono.CSharp
                                                //
                                                if (imported_events != null) {
                                                        // The backing event field should be private but it may not
-                                                       int index = imported_events.FindIndex (l => l.Name == fi.Name);
-                                                       if (index >= 0) {
-                                                               event_spec = imported_events[index];
-                                                               event_spec.BackingField = (FieldSpec) imported;
-                                                               imported_events.RemoveAt (index);
-                                                               continue;
+                                                       int i;
+                                                       for (i = 0; i < imported_events.Count; ++i) {
+                                                               var ev = imported_events[i];
+                                                               if (ev.Name == fi.Name) {
+                                                                       ev.BackingField = (FieldSpec) imported;
+                                                                       imported_events.RemoveAt (i);
+                                                                       i = -1;
+                                                                       break;
+                                                               }
                                                        }
+
+                                                       if (i < 0)
+                                                               continue;
                                                }
 
                                                break;