From 1f12fc5e91f508047087c1f7097efbeab5f38037 Mon Sep 17 00:00:00 2001 From: PrototypeTrousers Date: Tue, 8 Nov 2022 18:00:30 -0300 Subject: [PATCH] synchronizedList must be in a synchronized block when iterating --- src/main/java/appeng/client/me/ItemRepo.java | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/src/main/java/appeng/client/me/ItemRepo.java b/src/main/java/appeng/client/me/ItemRepo.java index e02657149..94955702e 100644 --- a/src/main/java/appeng/client/me/ItemRepo.java +++ b/src/main/java/appeng/client/me/ItemRepo.java @@ -67,11 +67,12 @@ public class ItemRepo { public IAEItemStack getReferenceItem(int idx) { idx += this.src.getCurrentScroll() * this.rowSize; - - if (idx >= this.view.size()) { - return null; + synchronized (this.view) { + if (idx >= this.view.size()) { + return null; + } + return this.view.get(idx); } - return this.view.get(idx); } void setSearch(final String search) { @@ -209,7 +210,9 @@ public class ItemRepo { return view; }).thenAcceptAsync(view -> { - this.view.clear(); + synchronized (this.view) { + this.view.clear(); + } this.view.addAll(view); }).thenRunAsync(() -> { this.searchTask = null; // Prevent redundant cancellation