From 6adb6b18820cca87a3caac4621177815360cb4e7 Mon Sep 17 00:00:00 2001 From: RogueException Date: Sun, 12 Jun 2016 17:08:15 -0300 Subject: [PATCH] Fixed OOB error in MessageCache.Download --- src/Discord.Net/{Utilities => Entities/WebSocket}/MessageCache.cs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) rename src/Discord.Net/{Utilities => Entities/WebSocket}/MessageCache.cs (92%) diff --git a/src/Discord.Net/Utilities/MessageCache.cs b/src/Discord.Net/Entities/WebSocket/MessageCache.cs similarity index 92% rename from src/Discord.Net/Utilities/MessageCache.cs rename to src/Discord.Net/Entities/WebSocket/MessageCache.cs index c0ddf5afd..a0fcbf62c 100644 --- a/src/Discord.Net/Utilities/MessageCache.cs +++ b/src/Discord.Net/Entities/WebSocket/MessageCache.cs @@ -104,11 +104,16 @@ namespace Discord return cachedMessages.Skip(cachedMessages.Count - limit).ToImmutableArray(); else { + Optional relativeId; + if (cachedMessages.Count == 0) + relativeId = fromId ?? new Optional(); + else + relativeId = dir == Direction.Before ? cachedMessages[0].Id : cachedMessages[cachedMessages.Count - 1].Id; var args = new GetChannelMessagesParams { Limit = limit - cachedMessages.Count, RelativeDirection = dir, - RelativeMessageId = dir == Direction.Before ? cachedMessages[0].Id : cachedMessages[cachedMessages.Count - 1].Id + RelativeMessageId = relativeId }; var downloadedMessages = await _discord.ApiClient.GetChannelMessagesAsync(_channel.Id, args).ConfigureAwait(false); return cachedMessages.Concat(downloadedMessages.Select(x => new CachedMessage(_channel, _channel.GetUser(x.Id), x))).ToImmutableArray();