]> source.dussan.org Git - vaadin-framework.git/commitdiff
#3879 removing portlet leaked memory due to ConcurrentModificationException
authorHenri Sara <henri.sara@itmill.com>
Thu, 17 Dec 2009 13:26:42 +0000 (13:26 +0000)
committerHenri Sara <henri.sara@itmill.com>
Thu, 17 Dec 2009 13:26:42 +0000 (13:26 +0000)
svn changeset:10390/svn branch:6.2

src/com/vaadin/terminal/gwt/server/PortletApplicationContext.java

index 65fe91a267fe1db854b246c89e07354de2710fa2..b8d058d88a3da6602620904b99dd585422106538 100644 (file)
@@ -5,6 +5,7 @@ package com.vaadin.terminal.gwt.server;
 \r
 import java.io.Serializable;\r
 import java.util.HashMap;\r
+import java.util.Iterator;\r
 import java.util.LinkedHashSet;\r
 import java.util.Map;\r
 import java.util.Set;\r
@@ -83,9 +84,12 @@ public class PortletApplicationContext extends WebApplicationContext implements
     @Override\r
     protected void removeApplication(Application application) {\r
         portletListeners.remove(application);\r
-        for (Portlet key : portletToApplication.keySet()) {\r
-            if (portletToApplication.get(key) == application) {\r
-                portletToApplication.remove(key);\r
+        for (Iterator<Application> it = portletToApplication.values()\r
+                .iterator(); it.hasNext();) {\r
+            Application value = it.next();\r
+            if (value == application) {\r
+                // values().iterator() is backed by the map\r
+                it.remove();\r
             }\r
         }\r
         super.removeApplication(application);\r