diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java index 1cb5679498..8c5135b454 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/chathistory/ChatHistoryPlugin.java @@ -62,6 +62,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener private static final String CLEAR_HISTORY = "Clear history"; private static final String CLEAR_PRIVATE = "Private:"; private static final int CYCLE_HOTKEY = KeyEvent.VK_TAB; + private static final int FRIENDS_MAX_SIZE = 5; private Queue messageQueue; private Deque friends; @@ -91,7 +92,7 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener protected void startUp() { messageQueue = EvictingQueue.create(100); - friends = new ArrayDeque<>(5); + friends = new ArrayDeque<>(FRIENDS_MAX_SIZE + 1); keyManager.registerKeyListener(this); } @@ -134,7 +135,14 @@ public class ChatHistoryPlugin extends Plugin implements KeyListener case MODPRIVATECHAT: final String name = Text.removeTags(chatMessage.getName()); // Remove to ensure uniqueness & its place in history - friends.remove(name); + if (!friends.remove(name)) + { + // If the friend didn't previously exist ensure deque capacity doesn't increase by adding them + if (friends.size() >= FRIENDS_MAX_SIZE) + { + friends.remove(); + } + } friends.add(name); // intentional fall-through case PUBLICCHAT: