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 @ApiStatus.Internal
public boolean unregister(@NotNull final PlaceholderExpansion expansion) { public boolean unregister(@NotNull final PlaceholderExpansion expansion) {
if (expansions.remove(expansion.getIdentifier()) == null) { expansionsLock.lock();
return false; try {
if (expansions.remove(expansion.getIdentifier()) == null) {
return false;
}
} finally {
expansionsLock.unlock();
} }
Bukkit.getPluginManager().callEvent(new ExpansionUnregisterEvent(expansion)); Bukkit.getPluginManager().callEvent(new ExpansionUnregisterEvent(expansion));
@ -335,12 +340,17 @@ public final class LocalExpansionManager implements Listener {
} }
private void unregisterAll() { private void unregisterAll() {
for (final PlaceholderExpansion expansion : Sets.newHashSet(expansions.values())) { expansionsLock.lock();
if (expansion.persist()) { try {
continue; for (final PlaceholderExpansion expansion : Sets.newHashSet(expansions.values())) {
} if (expansion.persist()) {
continue;
}
expansion.unregister(); expansion.unregister();
}
} finally {
expansionsLock.unlock();
} }
} }