diff options
author | kaelima <kaelima@live.se> | 2011-09-05 13:53:14 +0200 |
---|---|---|
committer | kaelima <kaelima@live.se> | 2011-09-05 13:53:14 +0200 |
commit | 18af717a0f23ae4d54882d8479eedae0afb6f94e (patch) | |
tree | 0543d720ac046c3eb07909ffd957200b407c01db | |
parent | cf0921f65659e02417c84a6be76d2406fad04a0d (diff) |
Core/Channels: Fix crash in HandleJoinChannel introduced with commit bbde479f4aab74733734.
-rwxr-xr-x | src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp b/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp index 3f9609bc0e0..93042a69eb2 100755 --- a/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp +++ b/src/server/game/Server/Protocol/Handlers/ChannelHandler.cpp @@ -26,15 +26,21 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) uint32 channel_id; uint8 unknown1, unknown2; std::string channelname, pass; - ChatChannelsEntry const* channel; recvPacket >> channel_id; if (channel_id) { - channel = sChatChannelsStore.LookupEntry(channel_id); + ChatChannelsEntry const* channel = sChatChannelsStore.LookupEntry(channel_id); if (!channel) return; + + AreaTableEntry const* current_zone = GetAreaEntryByAreaID(_player->GetZoneId()); + if (!current_zone) + return; + + if (!_player->CanJoinConstantChannelInZone(channel, current_zone)) + return; } recvPacket >> unknown1 >> unknown2; @@ -45,17 +51,10 @@ void WorldSession::HandleJoinChannel(WorldPacket& recvPacket) recvPacket >> pass; - AreaTableEntry const* current_zone = GetAreaEntryByAreaID(_player->GetZoneId()); - if (!current_zone) - return; - - if (!_player->CanJoinConstantChannelInZone(channel, current_zone)) - return; - if (ChannelMgr* cMgr = channelMgr(_player->GetTeam())) { cMgr->team = _player->GetTeam(); - if (Channel *chn = cMgr->GetJoinChannel(channelname, channel_id)) + if (Channel* chn = cMgr->GetJoinChannel(channelname, channel_id)) chn->Join(_player->GetGUID(), pass.c_str()); } } |