aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorkaelima <kaelima@live.se>2012-03-02 12:23:16 +0100
committerkaelima <kaelima@live.se>2012-03-02 12:23:16 +0100
commit394dbf0cdceea425a1ad63ecebc614e29728d365 (patch)
treebc6ac08f53fa5cf98135545071fa60a7bdf8b875 /src
parent254256668b9751177051a72135a400387fac1d19 (diff)
Core/Misc: Fix a crash in CalendarMgr::AddAction and initialize some wild pointers.
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Calendar/CalendarMgr.cpp7
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp15
-rwxr-xr-xsrc/server/game/Maps/MapInstanced.cpp24
3 files changed, 20 insertions, 26 deletions
diff --git a/src/server/game/Calendar/CalendarMgr.cpp b/src/server/game/Calendar/CalendarMgr.cpp
index b286abba81e..761bbb9b496 100644
--- a/src/server/game/Calendar/CalendarMgr.cpp
+++ b/src/server/game/Calendar/CalendarMgr.cpp
@@ -375,7 +375,7 @@ void CalendarMgr::AddAction(CalendarAction const& action)
uint64 eventId = action.Invite.GetEventId();
uint64 inviteId = action.Invite.GetInviteId();
- CalendarEvent* calendarEvent;
+ CalendarEvent* calendarEvent = NULL;
if (action.GetInviteId() != action.Invite.GetInviteId())
calendarEvent = CheckPermisions(eventId, action.GetPlayer(), action.GetInviteId(), CALENDAR_RANK_MODERATOR);
else
@@ -395,7 +395,7 @@ void CalendarMgr::AddAction(CalendarAction const& action)
uint64 eventId = action.Invite.GetEventId();
uint64 inviteId = action.Invite.GetInviteId();
- CalendarEvent* calendarEvent;
+ CalendarEvent* calendarEvent = NULL;
if (action.GetInviteId() != action.Invite.GetInviteId())
calendarEvent = CheckPermisions(eventId, action.GetPlayer(), action.GetInviteId(), CALENDAR_RANK_OWNER);
else
@@ -420,6 +420,9 @@ void CalendarMgr::AddAction(CalendarAction const& action)
// already checked in CheckPermisions
CalendarInvite* invite = GetInvite(inviteId);
+ if (!invite)
+ return;
+
if (calendarEvent->GetCreatorGUID() == invite->GetInvitee())
{
action.GetPlayer()->GetSession()->SendCalendarCommandResult(CALENDAR_ERROR_DELETE_CREATOR_FAILED);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 138eda962aa..dbbb8acf759 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -784,20 +784,9 @@ uint32 Unit::DealDamage(Unit* victim, uint32 damage, CleanDamage const* cleanDam
// last damage from duel opponent
if (duel_hasEnded)
{
- Player* he;
+ Player* he = duel_wasMounted ? victim->GetCharmer()->ToPlayer() : victim->ToPlayer();
- if (duel_wasMounted)
- {
- ASSERT(victim->GetCharmer()->GetTypeId() == TYPEID_PLAYER);
- he = victim->GetCharmer()->ToPlayer();
- }
- else
- {
- ASSERT(victim->GetTypeId() == TYPEID_PLAYER);
- he = victim->ToPlayer();
- }
-
- ASSERT(he->duel);
+ ASSERT(he && he->duel);
if (duel_wasMounted) // In this case victim==mount
victim->SetHealth(1);
diff --git a/src/server/game/Maps/MapInstanced.cpp b/src/server/game/Maps/MapInstanced.cpp
index fbe609bee23..5543251e115 100755
--- a/src/server/game/Maps/MapInstanced.cpp
+++ b/src/server/game/Maps/MapInstanced.cpp
@@ -116,19 +116,21 @@ Map* MapInstanced::CreateInstanceForPlayer(const uint32 mapId, Player* player)
return NULL;
Map* map = NULL;
- uint32 NewInstanceId = 0; // instanceId of the resulting map
+ uint32 newInstanceId = 0; // instanceId of the resulting map
if (IsBattlegroundOrArena())
{
// instantiate or find existing bg map for player
// the instance id is set in battlegroundid
- NewInstanceId = player->GetBattlegroundId();
- if (!NewInstanceId) return NULL;
- map = sMapMgr->FindMap(mapId, NewInstanceId);
+ newInstanceId = player->GetBattlegroundId();
+ if (!newInstanceId)
+ return NULL;
+
+ map = sMapMgr->FindMap(mapId, newInstanceId);
if (!map)
{
if (Battleground* bg = player->GetBattleground())
- map = CreateBattleground(NewInstanceId, bg);
+ map = CreateBattleground(newInstanceId, bg);
else
{
player->TeleportToBGEntryPoint();
@@ -158,24 +160,24 @@ Map* MapInstanced::CreateInstanceForPlayer(const uint32 mapId, Player* player)
if (pSave)
{
// solo/perm/group
- NewInstanceId = pSave->GetInstanceId();
- map = FindInstanceMap(NewInstanceId);
+ newInstanceId = pSave->GetInstanceId();
+ map = FindInstanceMap(newInstanceId);
// it is possible that the save exists but the map doesn't
if (!map)
- map = CreateInstance(NewInstanceId, pSave, pSave->GetDifficulty());
+ map = CreateInstance(newInstanceId, pSave, pSave->GetDifficulty());
}
else
{
// if no instanceId via group members or instance saves is found
// the instance will be created for the first time
- NewInstanceId = sMapMgr->GenerateInstanceId();
+ newInstanceId = sMapMgr->GenerateInstanceId();
Difficulty diff = player->GetGroup() ? player->GetGroup()->GetDifficulty(IsRaid()) : player->GetDifficulty(IsRaid());
//Seems it is now possible, but I do not know if it should be allowed
//ASSERT(!FindInstanceMap(NewInstanceId));
- map = FindInstanceMap(NewInstanceId);
+ map = FindInstanceMap(newInstanceId);
if (!map)
- map = CreateInstance(NewInstanceId, NULL, diff);
+ map = CreateInstance(newInstanceId, NULL, diff);
}
}