Browse Source

Increment globaluser refs on private channel creation

tags/1.0.0-rc2
RogueException 8 years ago
parent
commit
4a128b326b
3 changed files with 14 additions and 10 deletions
  1. +12
    -10
      src/Discord.Net.WebSocket/ClientState.cs
  2. +1
    -0
      src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs
  3. +1
    -0
      src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs

+ 12
- 10
src/Discord.Net.WebSocket/ClientState.cs View File

@@ -55,26 +55,28 @@ namespace Discord.WebSocket
{
_channels[channel.Id] = channel;

if (channel is SocketDMChannel dmChannel)
_dmChannels[dmChannel.Recipient.Id] = dmChannel;
else
switch (channel)
{
if (channel is SocketGroupChannel groupChannel)
case SocketDMChannel dmChannel:
_dmChannels[dmChannel.Recipient.Id] = dmChannel;
break;
case SocketGroupChannel groupChannel:
_groupChannels.TryAdd(groupChannel.Id);
break;
}
}
internal SocketChannel RemoveChannel(ulong id)
{
if (_channels.TryRemove(id, out SocketChannel channel))
{
if (channel is SocketDMChannel dmChannel)
switch (channel)
{
_dmChannels.TryRemove(dmChannel.Recipient.Id, out SocketDMChannel ignored);
}
else
{
if (channel is SocketGroupChannel groupChannel)
case SocketDMChannel dmChannel:
_dmChannels.TryRemove(dmChannel.Recipient.Id, out var ignored);
break;
case SocketGroupChannel groupChannel:
_groupChannels.TryRemove(id);
break;
}
return channel;
}


+ 1
- 0
src/Discord.Net.WebSocket/Entities/Channels/SocketDMChannel.cs View File

@@ -24,6 +24,7 @@ namespace Discord.WebSocket
: base(discord, id)
{
Recipient = recipient;
recipient.GlobalUser.AddRef();
if (Discord.MessageCacheSize > 0)
_messages = new MessageCache(Discord, this);
}


+ 1
- 0
src/Discord.Net.WebSocket/Entities/Channels/SocketGroupChannel.cs View File

@@ -131,6 +131,7 @@ namespace Discord.WebSocket
else
{
var privateUser = SocketGroupUser.Create(this, Discord.State, model);
privateUser.GlobalUser.AddRef();
_users[privateUser.Id] = privateUser;
return privateUser;
}


Loading…
Cancel
Save