From e7401eda68d8c946c2f6f8f872829b9d5a55540c Mon Sep 17 00:00:00 2001 From: RogueException Date: Sat, 25 Mar 2017 19:25:00 -0300 Subject: [PATCH] Fixed internal nullref on voicestate change --- .../Entities/Guilds/SocketGuild.cs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs index fb5d785c9..7de5eda77 100644 --- a/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs +++ b/src/Discord.Net.WebSocket/Entities/Guilds/SocketGuild.cs @@ -430,13 +430,13 @@ namespace Discord.WebSocket var after = SocketVoiceState.Create(voiceChannel, model); _voiceStates[model.UserId] = after; - if (before.VoiceChannel?.Id != after.VoiceChannel?.Id) + if (_audioClient != null && before.VoiceChannel?.Id != after.VoiceChannel?.Id) { if (model.UserId == CurrentUser.Id) RepopulateAudioStreams(); else { - _audioClient?.RemoveInputStream(model.UserId); //User changed channels, end their stream + _audioClient.RemoveInputStream(model.UserId); //User changed channels, end their stream if (CurrentUser.VoiceChannel != null && after.VoiceChannel?.Id == CurrentUser.VoiceChannel?.Id) _audioClient.CreateInputStream(model.UserId); } @@ -575,16 +575,13 @@ namespace Discord.WebSocket internal void RepopulateAudioStreams() { - if (_audioClient != null) + _audioClient.ClearInputStreams(); //We changed channels, end all current streams + if (CurrentUser.VoiceChannel != null) { - _audioClient.ClearInputStreams(); //We changed channels, end all current streams - if (CurrentUser.VoiceChannel != null) + foreach (var pair in _voiceStates) { - foreach (var pair in _voiceStates) - { - if (pair.Value.VoiceChannel?.Id == CurrentUser.VoiceChannel?.Id) - _audioClient.CreateInputStream(pair.Key); - } + if (pair.Value.VoiceChannel?.Id == CurrentUser.VoiceChannel?.Id) + _audioClient.CreateInputStream(pair.Key); } } }