From a8afd3eb81e362e42a19f1875e3a67247aed0d2b Mon Sep 17 00:00:00 2001 From: Chris Rhodes Date: Tue, 19 Apr 2016 12:45:16 -0700 Subject: [PATCH 1/2] Remove items from the map before returning :ok_hand: --- state.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/state.go b/state.go index 9ee0f0c..d63a6fb 100644 --- a/state.go +++ b/state.go @@ -105,6 +105,8 @@ func (s *State) GuildRemove(guild *Guild) error { s.Lock() defer s.Unlock() + + delete(s.guildMap, guild.ID) for i, g := range s.Guilds { if g.ID == guild.ID { @@ -113,8 +115,6 @@ func (s *State) GuildRemove(guild *Guild) error { } } - delete(s.guildMap, guild.ID) - return nil } @@ -259,6 +259,8 @@ func (s *State) ChannelRemove(channel *Channel) error { if err != nil { return err } + + delete(s.channelMap, channel.ID) if channel.IsPrivate { s.Lock() @@ -287,8 +289,6 @@ func (s *State) ChannelRemove(channel *Channel) error { } } - delete(s.channelMap, channel.ID) - return nil } From a9bed749a175389e5db1559c00c04b364a558933 Mon Sep 17 00:00:00 2001 From: Chris Rhodes Date: Tue, 19 Apr 2016 16:00:12 -0700 Subject: [PATCH 2/2] Fix potential threading issue. --- state.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/state.go b/state.go index d63a6fb..c6d3efc 100644 --- a/state.go +++ b/state.go @@ -259,8 +259,6 @@ func (s *State) ChannelRemove(channel *Channel) error { if err != nil { return err } - - delete(s.channelMap, channel.ID) if channel.IsPrivate { s.Lock() @@ -269,7 +267,7 @@ func (s *State) ChannelRemove(channel *Channel) error { for i, c := range s.PrivateChannels { if c.ID == channel.ID { s.PrivateChannels = append(s.PrivateChannels[:i], s.PrivateChannels[i+1:]...) - return nil + break } } } else { @@ -284,10 +282,12 @@ func (s *State) ChannelRemove(channel *Channel) error { for i, c := range guild.Channels { if c.ID == channel.ID { guild.Channels = append(guild.Channels[:i], guild.Channels[i+1:]...) - return nil + break } } } + + delete(s.channelMap, channel.ID) return nil }