aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaelima <kaelima@live.se>2011-09-05 13:53:14 +0200
committerkaelima <kaelima@live.se>2011-09-05 13:53:14 +0200
commit18af717a0f23ae4d54882d8479eedae0afb6f94e (patch)
tree0543d720ac046c3eb07909ffd957200b407c01db /src
parentcf0921f65659e02417c84a6be76d2406fad04a0d (diff)
Core/Channels: Fix crash in HandleJoinChannel introduced with commit bbde479f4aab74733734.
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/ChannelHandler.cpp19
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());
}
}