Add missed locking onto expansions

This commit is contained in:
Ivan Pekov 2021-10-28 18:41:35 +03:00
parent 0798d94449
commit 74423d6dc0
No known key found for this signature in database
GPG Key ID: E44CE4557A5E12E0

View File

@ -281,8 +281,13 @@ public final class LocalExpansionManager implements Listener {
@ApiStatus.Internal
public boolean unregister(@NotNull final PlaceholderExpansion expansion) {
if (expansions.remove(expansion.getIdentifier()) == null) {
return false;
expansionsLock.lock();
try {
if (expansions.remove(expansion.getIdentifier()) == null) {
return false;
}
} finally {
expansionsLock.unlock();
}
Bukkit.getPluginManager().callEvent(new ExpansionUnregisterEvent(expansion));
@ -335,12 +340,17 @@ public final class LocalExpansionManager implements Listener {
}
private void unregisterAll() {
for (final PlaceholderExpansion expansion : Sets.newHashSet(expansions.values())) {
if (expansion.persist()) {
continue;
}
expansionsLock.lock();
try {
for (final PlaceholderExpansion expansion : Sets.newHashSet(expansions.values())) {
if (expansion.persist()) {
continue;
}
expansion.unregister();
expansion.unregister();
}
} finally {
expansionsLock.unlock();
}
}
@ -397,7 +407,7 @@ public final class LocalExpansionManager implements Listener {
}
plugin.getLogger().warning("There was an issue with loading an expansion.");
return null;
}
}