*Cleanups before delete after not successfull load pet from db. Thanks to Drahy for debug traces.

--HG--
branch : trunk
This commit is contained in:
QAston
2010-01-18 23:12:35 +01:00
parent c7c3b0edb0
commit a1bbbd1421
4 changed files with 14 additions and 0 deletions
+2
View File
@@ -678,6 +678,7 @@ void WorldSession::HandleUnstablePet( WorldPacket & recv_data )
Pet *newpet = new Pet(_player, HUNTER_PET);
if(!newpet->LoadPetFromDB(_player,creature_id,petnumber))
{
newpet->CleanupsBeforeDelete();
delete newpet;
newpet = NULL;
WorldPacket data(SMSG_STABLE_RESULT, 1);
@@ -796,6 +797,7 @@ void WorldSession::HandleStableSwapPet( WorldPacket & recv_data )
Pet *newpet = new Pet(_player);
if(!newpet->LoadPetFromDB(_player,creature_id,pet_number))
{
newpet->CleanupsBeforeDelete();
delete newpet;
data << uint8(0x06);
}
+3
View File
@@ -1828,6 +1828,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
// petentry==0 for hunter "call pet" (current pet summoned if any)
if(!entry)
{
pet->CleanupsBeforeDelete();
delete pet;
return NULL;
}
@@ -1836,6 +1837,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
if(!pet->IsPositionValid())
{
sLog.outError("ERROR: Pet (guidlow %d, entry %d) not summoned. Suggested coordinates isn't valid (X: %f Y: %f)",pet->GetGUIDLow(),pet->GetEntry(),pet->GetPositionX(),pet->GetPositionY());
pet->CleanupsBeforeDelete();
delete pet;
return NULL;
}
@@ -1845,6 +1847,7 @@ Pet* Player::SummonPet(uint32 entry, float x, float y, float z, float ang, PetTy
if(!pet->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map, GetPhaseMask(), entry, pet_number))
{
sLog.outError("no such creature entry %u", entry);
pet->CleanupsBeforeDelete();
delete pet;
return NULL;
}
+6
View File
@@ -16462,7 +16462,10 @@ void Player::LoadPet()
{
Pet *pet = new Pet(this);
if (!pet->LoadPetFromDB(this,0,0,true))
{
pet->CleanupsBeforeDelete();
delete pet;
}
}
}
@@ -22455,7 +22458,10 @@ void Player::ResummonPetTemporaryUnSummonedIfAny()
Pet* NewPet = new Pet(this);
if(!NewPet->LoadPetFromDB(this, 0, m_temporaryUnsummonedPetNumber, true))
{
NewPet->CleanupsBeforeDelete();
delete NewPet;
}
m_temporaryUnsummonedPetNumber = 0;
}
+3
View File
@@ -4855,7 +4855,10 @@ void Spell::EffectScriptEffect(uint32 effIndex)
}
}
else
{
NewPet->CleanupsBeforeDelete();
delete NewPet;
}
}
}
return;