aboutsummaryrefslogtreecommitdiff
path: root/src/game/ArenaTeam.cpp
diff options
context:
space:
mode:
authorAnubisss <none@none>2010-01-23 14:45:58 +0100
committerAnubisss <none@none>2010-01-23 14:45:58 +0100
commitd9cb0702158fd045285f2c0a904cb31a45a3864a (patch)
treecdc6a7c6a83c6eea603ae296a653fb9f04945aad /src/game/ArenaTeam.cpp
parentc784110d87666579f18620a98e1e57118db4a9cf (diff)
Implement QueryResult_AutoPtr type which is ACE's reference counted auto_ptr(ACE_Refcounted_Auto_Ptr) for QueryResult pointers.
Use this auto_ptr for every DB queries(except QueryNamedResult yet). This patch guarantees NO memory leaks from QueryResult pointers. Thanks to raczman for the idea and for the helping to make this patch. --HG-- branch : trunk
Diffstat (limited to 'src/game/ArenaTeam.cpp')
-rw-r--r--src/game/ArenaTeam.cpp14
1 files changed, 4 insertions, 10 deletions
diff --git a/src/game/ArenaTeam.cpp b/src/game/ArenaTeam.cpp
index 1d9669007fc..320d8aa6b98 100644
--- a/src/game/ArenaTeam.cpp
+++ b/src/game/ArenaTeam.cpp
@@ -116,13 +116,12 @@ bool ArenaTeam::AddMember(const uint64& PlayerGuid)
else
{
// 0 1
- QueryResult *result = CharacterDatabase.PQuery("SELECT name, class FROM characters WHERE guid='%u'", GUID_LOPART(PlayerGuid));
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT name, class FROM characters WHERE guid='%u'", GUID_LOPART(PlayerGuid));
if(!result)
return false;
plName = (*result)[0].GetCppString();
plClass = (*result)[1].GetUInt8();
- delete result;
// check if player already in arenateam of that size
if(Player::GetArenaTeamIdFromDB(PlayerGuid, GetType()) != 0)
@@ -175,7 +174,7 @@ bool ArenaTeam::AddMember(const uint64& PlayerGuid)
bool ArenaTeam::LoadArenaTeamFromDB(uint32 ArenaTeamId)
{
- QueryResult *result = CharacterDatabase.PQuery("SELECT arenateamid,name,captainguid,type,BackgroundColor,EmblemStyle,EmblemColor,BorderStyle,BorderColor FROM arena_team WHERE arenateamid = '%u'", ArenaTeamId);
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT arenateamid,name,captainguid,type,BackgroundColor,EmblemStyle,EmblemColor,BorderStyle,BorderColor FROM arena_team WHERE arenateamid = '%u'", ArenaTeamId);
if(!result)
return false;
@@ -192,8 +191,6 @@ bool ArenaTeam::LoadArenaTeamFromDB(uint32 ArenaTeamId)
m_BorderStyle = fields[7].GetUInt32();
m_BorderColor = fields[8].GetUInt32();
- delete result;
-
// only load here, so additional checks can be made
LoadStatsFromDB(ArenaTeamId);
LoadMembersFromDB(ArenaTeamId);
@@ -215,7 +212,7 @@ bool ArenaTeam::LoadArenaTeamFromDB(uint32 ArenaTeamId)
void ArenaTeam::LoadStatsFromDB(uint32 ArenaTeamId)
{
// 0 1 2 3 4 5
- QueryResult *result = CharacterDatabase.PQuery("SELECT rating,games,wins,played,wins2,rank FROM arena_team_stats WHERE arenateamid = '%u'", ArenaTeamId);
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT rating,games,wins,played,wins2,rank FROM arena_team_stats WHERE arenateamid = '%u'", ArenaTeamId);
if(!result)
return;
@@ -228,14 +225,12 @@ void ArenaTeam::LoadStatsFromDB(uint32 ArenaTeamId)
m_stats.games_season = fields[3].GetUInt32();
m_stats.wins_season = fields[4].GetUInt32();
m_stats.rank = fields[5].GetUInt32();
-
- delete result;
}
void ArenaTeam::LoadMembersFromDB(uint32 ArenaTeamId)
{
// 0 1 2 3 4 5 6 7
- QueryResult *result = CharacterDatabase.PQuery("SELECT member.guid,played_week,wons_week,played_season,wons_season,personal_rating,name,class "
+ QueryResult_AutoPtr result = CharacterDatabase.PQuery("SELECT member.guid,played_week,wons_week,played_season,wons_season,personal_rating,name,class "
"FROM arena_team_member member "
"INNER JOIN characters chars on member.guid = chars.guid "
"WHERE member.arenateamid = '%u'", ArenaTeamId);
@@ -256,7 +251,6 @@ void ArenaTeam::LoadMembersFromDB(uint32 ArenaTeamId)
newmember.Class = fields[7].GetUInt8();
m_members.push_back(newmember);
}while( result->NextRow() );
- delete result;
}
void ArenaTeam::SetCaptain(const uint64& guid)