# HG changeset patch # User Jiri Vanek # Date 1437390071 -7200 # Node ID ae5d6515b833f004632e6f9ee356e21bea5d4ecd # Parent 050347a87858b386ee14a7ca2a80bf2b444d37f4 Fixed download service * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (fillInPartJars) for-each loop replaced by indexed loop to prevent ConcurrentModificationException diff -r 050347a87858 -r ae5d6515b833 ChangeLog --- a/ChangeLog Tue Mar 03 09:46:35 2015 -0500 +++ b/ChangeLog Mon Jul 20 13:01:11 2015 +0200 @@ -1,3 +1,9 @@ +2015-07-20 Jiri Vanek + + Fixed download service + * netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java: (fillInPartJars) + for-each loop replaced by indexed loop to prevent ConcurrentModificationException + 2015-03-03 Jie Kang Fix DeadLockTest reproducers diff -r 050347a87858 -r ae5d6515b833 NEWS --- a/NEWS Tue Mar 03 09:46:35 2015 -0500 +++ b/NEWS Mon Jul 20 13:01:11 2015 +0200 @@ -9,6 +9,7 @@ CVE-XXXX-YYYY: http://www.cve.mitre.org/cgi-bin/cvename.cgi?name=XXXX-YYYY New in release 1.4.3 (YYYY-MM-DD): +* fixed DownloadService New in release 1.4.2 (2014-02-05): * Dialogs center on screen before becoming visible diff -r 050347a87858 -r ae5d6515b833 netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java --- a/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Tue Mar 03 09:46:35 2015 -0500 +++ b/netx/net/sourceforge/jnlp/runtime/JNLPClassLoader.java Mon Jul 20 13:01:11 2015 +0200 @@ -1225,8 +1225,9 @@ * in the same part). */ protected void fillInPartJars(List jars) { - for (JARDesc desc : jars) { - String part = desc.getPart(); + //can not use iterator, will rise ConcurrentModificationException on jars.add(jar); + for (int x = 0 ; x< jars.size() ; x++) { + String part = jars.get(x).getPart(); // "available" field can be affected by two different threads // working in loadClass(String) synchronized (available) {