diff options
author | KingPin <none@none> | 2008-10-28 08:10:44 -0500 |
---|---|---|
committer | KingPin <none@none> | 2008-10-28 08:10:44 -0500 |
commit | 3ea64f75812b7cdf81d9bc404ee9f50f16054b6c (patch) | |
tree | f94744dca627c05971268a19f5eb381eacfd6653 /src | |
parent | f724227f2478f8755ad22af9be6e0367d109fdd0 (diff) |
[svn] * Prevent crash at access to deleted social data for player. Remove social data at logout instead - source mangos
* Fixed subcommands list output at console. - source mangos
* Rename scripts update.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Chat.cpp | 8 | ||||
-rw-r--r-- | src/game/Player.cpp | 5 | ||||
-rw-r--r-- | src/game/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/game/WorldSession.cpp | 1 |
4 files changed, 10 insertions, 6 deletions
diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 67c79642631..0b1bf2e60b6 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -795,7 +795,13 @@ bool ChatHandler::ShowHelpForSubCommands(ChatCommand *table, char const* cmd, ch if( *subcmd && !hasStringAbbr(table[i].Name, subcmd)) continue; - (list += "\n ") += table[i].Name; + if(m_session) + list += "\n "; + else + list += "\n\r "; + + list += table[i].Name; + if(table[i].ChildCommands) list += " ..."; } diff --git a/src/game/Player.cpp b/src/game/Player.cpp index 39ac45bde42..b976ff13890 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -433,10 +433,7 @@ Player::~Player () { CleanupsBeforeDelete(); - if(m_uint32Values) // only for fully created Object - { - sSocialMgr.RemovePlayerSocial(GetGUIDLow()); - } + //m_social = NULL; // Note: buy back item already deleted from DB when player was saved for(int i = 0; i < PLAYER_SLOTS_COUNT; ++i) diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index 4783724d025..90dc40c89fc 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -4898,7 +4898,7 @@ void Spell::EffectDuel(uint32 i) Player *target = (Player*)unitTarget; // caster or target already have requested duel - if( caster->duel || target->duel || target->GetSocial()->HasIgnore(caster->GetGUIDLow()) ) + if( caster->duel || target->duel || !target->GetSocial() || target->GetSocial()->HasIgnore(caster->GetGUIDLow()) ) return; // Players can only fight a duel with each other outside (=not inside dungeons and not in capital cities) diff --git a/src/game/WorldSession.cpp b/src/game/WorldSession.cpp index 7d9e2a365ac..129668be5b0 100644 --- a/src/game/WorldSession.cpp +++ b/src/game/WorldSession.cpp @@ -385,6 +385,7 @@ void WorldSession::LogoutPlayer(bool Save) ///- Delete the player object _player->CleanupsBeforeDelete(); // do some cleanup before deleting to prevent crash at crossreferences to already deleted data + sSocialMgr.RemovePlayerSocial (_player->GetGUIDLow ()); delete _player; _player = NULL; |