From 438e31edd1b3d1e4e3c31cf1fca6ba28cf272a91 Mon Sep 17 00:00:00 2001 From: Mihail Gribkov <61027276+Misha-133@users.noreply.github.com> Date: Sat, 14 Dec 2024 02:17:11 +0800 Subject: [PATCH] [Fix] Clamp cache size (#3038) * fix * clamp max cache size * net 4.6.1 strikes again * real --- .../Entities/AuditLogs/AuditLogCache.cs | 7 ++++++- .../Entities/Messages/MessageCache.cs | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Discord.Net.WebSocket/Entities/AuditLogs/AuditLogCache.cs b/src/Discord.Net.WebSocket/Entities/AuditLogs/AuditLogCache.cs index 3fd6eee9..00f99116 100644 --- a/src/Discord.Net.WebSocket/Entities/AuditLogs/AuditLogCache.cs +++ b/src/Discord.Net.WebSocket/Entities/AuditLogs/AuditLogCache.cs @@ -18,8 +18,13 @@ internal class AuditLogCache public AuditLogCache(DiscordSocketClient client) { _size = client.AuditLogCacheSize; + var dictSize = _size; + if (dictSize * 1.05 > int.MaxValue) + dictSize = int.MaxValue; + else + dictSize = (int)(dictSize * 1.05); - _entries = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(_size * 1.05)); + _entries = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, dictSize); _orderedEntries = new ConcurrentQueue(); } diff --git a/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs b/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs index 90064dd3..ca6de853 100644 --- a/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs +++ b/src/Discord.Net.WebSocket/Entities/Messages/MessageCache.cs @@ -17,7 +17,12 @@ namespace Discord.WebSocket public MessageCache(DiscordSocketClient discord) { _size = discord.MessageCacheSize; - _messages = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(_size * 1.05)); + var dictSize = _size; + if (dictSize * 1.05 > int.MaxValue) + dictSize = int.MaxValue; + else + dictSize = (int)(dictSize * 1.05); + _messages = new ConcurrentDictionary(ConcurrentHashSet.DefaultConcurrencyLevel, dictSize); _orderedMessages = new ConcurrentQueue(); }