From 43de254a98a861de4b5083d8e38330a27506c72a Mon Sep 17 00:00:00 2001 From: huanghongxun Date: Thu, 23 Apr 2020 08:02:55 +0800 Subject: [PATCH] fix: ConcurrentModificationException --- .../org/jackhuang/hmcl/download/VersionList.java | 14 +++++++------- .../hmcl/download/game/GameVersionList.java | 7 +------ 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java index 4f2378566..f9d1c062b 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/VersionList.java @@ -100,12 +100,7 @@ public abstract class VersionList { } protected Collection getVersionsImpl(String gameVersion) { - lock.readLock().lock(); - try { - return versions.get(gameVersion); - } finally { - lock.readLock().unlock(); - } + return versions.get(gameVersion); } /** @@ -115,7 +110,12 @@ public abstract class VersionList { * @return the collection of specific remote versions */ public final Collection getVersions(String gameVersion) { - return Collections.unmodifiableCollection(getVersionsImpl(gameVersion)); + lock.readLock().lock(); + try { + return Collections.unmodifiableCollection(new ArrayList<>(getVersionsImpl(gameVersion))); + } finally { + lock.readLock().unlock(); + } } /** diff --git a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameVersionList.java b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameVersionList.java index be667e0b1..d64553633 100644 --- a/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameVersionList.java +++ b/HMCLCore/src/main/java/org/jackhuang/hmcl/download/game/GameVersionList.java @@ -45,12 +45,7 @@ public final class GameVersionList extends VersionList { @Override protected Collection getVersionsImpl(String gameVersion) { - lock.readLock().lock(); - try { - return versions.values(); - } finally { - lock.readLock().unlock(); - } + return versions.values(); } @Override