From fc538c5088e52f0932f74f190cd6499fd6da8a9c Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 20 Apr 2014 14:49:44 +0200 Subject: Tools: Enabled struct packing to ensure that structures are read from files properly --- src/tools/map_extractor/adt.h | 4 ++++ src/tools/map_extractor/dbcfile.h | 4 ++++ src/tools/map_extractor/loadlib/loadlib.h | 5 +++++ src/tools/map_extractor/wdt.h | 4 ++++ src/tools/vmap4_extractor/adtfile.cpp | 2 +- src/tools/vmap4_extractor/adtfile.h | 6 +++--- src/tools/vmap4_extractor/loadlib/loadlib.h | 5 +++++ src/tools/vmap4_extractor/wmo.h | 4 ++++ 8 files changed, 30 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/tools/map_extractor/adt.h b/src/tools/map_extractor/adt.h index 5cb45d488d5..10894c7a697 100644 --- a/src/tools/map_extractor/adt.h +++ b/src/tools/map_extractor/adt.h @@ -40,6 +40,8 @@ enum LiquidType #define ADT_CELL_SIZE 8 #define ADT_GRID_SIZE (ADT_CELLS_PER_GRID*ADT_CELL_SIZE) +#pragma pack(push, 1) + // // Adt file height map chunk // @@ -304,4 +306,6 @@ public: adt_MHDR *a_grid; }; +#pragma pack(pop) + #endif diff --git a/src/tools/map_extractor/dbcfile.h b/src/tools/map_extractor/dbcfile.h index 526c553e0f0..9e2e6670f89 100644 --- a/src/tools/map_extractor/dbcfile.h +++ b/src/tools/map_extractor/dbcfile.h @@ -82,6 +82,8 @@ public: friend class DBCFile; friend class DBCFile::Iterator; + + Record& operator=(Record const& right); }; /** Iterator that iterates over records */ @@ -111,6 +113,8 @@ public: } private: Record record; + + Iterator& operator=(Iterator const& right); }; // Get record by id diff --git a/src/tools/map_extractor/loadlib/loadlib.h b/src/tools/map_extractor/loadlib/loadlib.h index 724c41ef3c9..39f800d9b4c 100644 --- a/src/tools/map_extractor/loadlib/loadlib.h +++ b/src/tools/map_extractor/loadlib/loadlib.h @@ -47,6 +47,8 @@ typedef uint8_t uint8; #define FILE_FORMAT_VERSION 18 +#pragma pack(push, 1) + union u_map_fcc { char fcc_txt[4]; @@ -80,4 +82,7 @@ public: bool loadFile(char *filename, bool log = true); virtual void free(); }; + +#pragma pack(pop) + #endif diff --git a/src/tools/map_extractor/wdt.h b/src/tools/map_extractor/wdt.h index a55598105b3..9b7fc53cb34 100644 --- a/src/tools/map_extractor/wdt.h +++ b/src/tools/map_extractor/wdt.h @@ -25,6 +25,8 @@ //************************************************************************************** #define WDT_MAP_SIZE 64 +#pragma pack(push, 1) + class wdt_MWMO{ union{ uint32 fcc; @@ -83,4 +85,6 @@ public: wdt_MWMO *wmo; }; +#pragma pack(pop) + #endif \ No newline at end of file diff --git a/src/tools/vmap4_extractor/adtfile.cpp b/src/tools/vmap4_extractor/adtfile.cpp index 246b448380a..c792524eec1 100644 --- a/src/tools/vmap4_extractor/adtfile.cpp +++ b/src/tools/vmap4_extractor/adtfile.cpp @@ -159,7 +159,7 @@ bool ADTFile::init(uint32 map_num, uint32 tileX, uint32 tileY) ADT.read(buf, size); char* p=buf; int q = 0; - WmoInstansName = new string[size]; + WmoInstansName = new std::string[size]; while (p Date: Sun, 20 Apr 2014 14:58:24 +0200 Subject: Core/Misc: Fix change faction on dead Night Elves keeping the speed buff Fix change faction on dead Night Elves causing the new player keeping the 175% wisp speed buff. Players will be resurrected automatically on change faction. Closes #255 --- src/server/game/Entities/Player/Player.cpp | 5 +++-- src/server/game/Handlers/CharacterHandler.cpp | 3 +++ 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 13635424cf0..8dc12c2ddb3 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -5149,8 +5149,9 @@ void Player::ResurrectPlayer(float restore_percent, bool applySickness) // remove death flag + set aura SetByteValue(UNIT_FIELD_BYTES_1, 3, 0x00); - if (getRace() == RACE_NIGHTELF) - RemoveAurasDueToSpell(20584); // speed bonuses + + // This must be called always even on Players with race != RACE_NIGHTELF in case of faction change + RemoveAurasDueToSpell(20584); // RACE_NIGHTELF speed bonuses RemoveAurasDueToSpell(8326); // SPELL_AURA_GHOST if (GetSession()->IsARecruiter() || (GetSession()->GetRecruiterId() != 0)) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index f9a5ec2d53b..f4ea4971190 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1768,6 +1768,9 @@ void WorldSession::HandleCharFactionOrRaceChange(WorldPacket& recvData) } } + // resurrect the character in case he's dead + sObjectAccessor->ConvertCorpseForPlayer(guid); + CharacterDatabase.EscapeString(newname); Player::Customize(guid, gender, skin, face, hairStyle, hairColor, facialHair); SQLTransaction trans = CharacterDatabase.BeginTransaction(); -- cgit v1.2.3 From 0f5632c70eb11a10225279a7d2d8b511d0095d16 Mon Sep 17 00:00:00 2001 From: Shauren Date: Sun, 20 Apr 2014 16:48:35 +0200 Subject: Core/Misc: Fixed some -Weffc++ warnings --- src/server/collision/Maps/MapTree.h | 4 ++++ src/server/collision/Models/WorldModel.h | 6 +++--- src/server/game/AI/CoreAI/UnitAI.h | 4 ++++ src/server/game/Accounts/RBAC.h | 5 +++-- src/server/game/Entities/Object/Object.h | 6 ++++-- src/server/game/Scripting/ScriptMgr.h | 2 ++ src/server/game/Server/WorldSession.h | 10 ++++++++++ src/server/game/Server/WorldSocket.h | 2 ++ src/server/game/Spells/Spell.h | 3 +++ src/server/game/World/World.h | 11 ++++++----- src/server/shared/DataStores/DBCFileLoader.h | 3 +++ src/server/shared/DataStores/DBCStore.h | 7 +++++++ src/server/shared/Database/DatabaseWorker.h | 5 ++++- src/server/shared/Database/DatabaseWorkerPool.h | 16 +++++++++------- src/server/shared/Database/MySQLConnection.h | 6 ++++-- src/server/shared/Database/PreparedStatement.h | 6 ++++++ src/server/shared/Database/QueryResult.h | 5 +++++ src/server/shared/Database/SQLOperation.h | 4 ++++ src/server/shared/Define.h | 2 ++ src/server/shared/Packets/ByteBuffer.h | 2 ++ src/server/shared/Threading/Callback.h | 6 ++++++ 21 files changed, 93 insertions(+), 22 deletions(-) (limited to 'src') diff --git a/src/server/collision/Maps/MapTree.h b/src/server/collision/Maps/MapTree.h index 90d61cbb88b..62fa3c97987 100644 --- a/src/server/collision/Maps/MapTree.h +++ b/src/server/collision/Maps/MapTree.h @@ -81,6 +81,10 @@ namespace VMAP bool isTiled() const { return iIsTiled; } uint32 numLoadedTiles() const { return iLoadedTiles.size(); } void getModelInstances(ModelInstance* &models, uint32 &count); + + private: + StaticMapTree(StaticMapTree const& right) DELETE_MEMBER; + StaticMapTree& operator=(StaticMapTree const& right) DELETE_MEMBER; }; struct AreaInfo diff --git a/src/server/collision/Models/WorldModel.h b/src/server/collision/Models/WorldModel.h index 8778998a6b7..da1f58a79c6 100644 --- a/src/server/collision/Models/WorldModel.h +++ b/src/server/collision/Models/WorldModel.h @@ -59,7 +59,7 @@ namespace VMAP bool writeToFile(FILE* wf); static bool readFromFile(FILE* rf, WmoLiquid* &liquid); private: - WmoLiquid(): iTilesX(0), iTilesY(0), iType(0), iHeight(0), iFlags(0) { } + WmoLiquid() : iTilesX(0), iTilesY(0), iCorner(), iType(0), iHeight(NULL), iFlags(NULL) { } uint32 iTilesX; //!< number of tiles in x direction, each uint32 iTilesY; G3D::Vector3 iCorner; //!< the lower corner @@ -74,10 +74,10 @@ namespace VMAP class GroupModel { public: - GroupModel(): iMogpFlags(0), iGroupWMOID(0), iLiquid(0) { } + GroupModel() : iBound(), iMogpFlags(0), iGroupWMOID(0), iLiquid(NULL) { } GroupModel(const GroupModel &other); GroupModel(uint32 mogpFlags, uint32 groupWMOID, const G3D::AABox &bound): - iBound(bound), iMogpFlags(mogpFlags), iGroupWMOID(groupWMOID), iLiquid(0) { } + iBound(bound), iMogpFlags(mogpFlags), iGroupWMOID(groupWMOID), iLiquid(NULL) { } ~GroupModel() { delete iLiquid; } //! pass mesh data to object and create BIH. Passed vectors get get swapped with old geometry! diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index 960d9f8903b..92e72dcfc53 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -262,6 +262,10 @@ class UnitAI virtual void sQuestReward(Player* /*player*/, Quest const* /*quest*/, uint32 /*opt*/) { } virtual bool sOnDummyEffect(Unit* /*caster*/, uint32 /*spellId*/, SpellEffIndex /*effIndex*/) { return false; } virtual void sOnGameEvent(bool /*start*/, uint16 /*eventId*/) { } + + private: + UnitAI(UnitAI const& right) DELETE_MEMBER; + UnitAI& operator=(UnitAI const& right) DELETE_MEMBER; }; class PlayerAI : public UnitAI diff --git a/src/server/game/Accounts/RBAC.h b/src/server/game/Accounts/RBAC.h index dc5a2768668..9b84d7ddb7d 100644 --- a/src/server/game/Accounts/RBAC.h +++ b/src/server/game/Accounts/RBAC.h @@ -702,7 +702,7 @@ class RBACPermission { public: RBACPermission(uint32 id = 0, std::string const& name = ""): - _id(id), _name(name) { } + _id(id), _name(name), _perms() { } /// Gets the Name of the Object std::string const& GetName() const { return _name; } @@ -737,7 +737,8 @@ class RBACData { public: RBACData(uint32 id, std::string const& name, int32 realmId, uint8 secLevel = 255): - _id(id), _name(name), _realmId(realmId), _secLevel(secLevel) { } + _id(id), _name(name), _realmId(realmId), _secLevel(secLevel), + _grantedPerms(), _deniedPerms(), _globalPerms() { } /// Gets the Name of the Object std::string const& GetName() const { return _name; } diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index d55e357de1d..2803b18c246 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -267,8 +267,8 @@ class Object // for output helpfull error messages from asserts bool PrintIndexError(uint32 index, bool set) const; - Object(const Object&); // prevent generation copy constructor - Object& operator=(Object const&); // prevent generation assigment operator + Object(Object const& right) DELETE_MEMBER; + Object& operator=(Object const& right) DELETE_MEMBER; }; struct Position @@ -497,6 +497,8 @@ template class GridObject { public: + virtual ~GridObject() { } + bool IsInGrid() const { return _gridRef.isValid(); } void AddToGrid(GridRefManager& m) { ASSERT(!IsInGrid()); _gridRef.link(&m, (T*)this); } void RemoveFromGrid() { ASSERT(IsInGrid()); _gridRef.unlink(); } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 8ed8a2b3c49..e63e44d5ed5 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -183,6 +183,8 @@ template class UpdatableScript { } + virtual ~UpdatableScript() { } + public: virtual void OnUpdate(TObject* /*obj*/, uint32 /*diff*/) { } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 0af6069a0e5..71703cb944f 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -138,6 +138,10 @@ public: protected: WorldSession* const m_pSession; + +private: + PacketFilter(PacketFilter const& right) DELETE_MEMBER; + PacketFilter& operator=(PacketFilter const& right) DELETE_MEMBER; }; //process only thread-safe packets in Map::Update() class MapSessionFilter : public PacketFilter @@ -950,6 +954,9 @@ class WorldSession typedef UNORDERED_MAP OpcodeStatusMap; OpcodeStatusMap _isOpcodeAllowed; // could be bool array, but wouldn't be practical for game versions with non-linear opcodes Policy _policy; + + DosProtection(DosProtection const& right) DELETE_MEMBER; + DosProtection& operator=(DosProtection const& right) DELETE_MEMBER; } AntiDOS; private: @@ -1003,6 +1010,9 @@ class WorldSession ACE_Based::LockedQueue _recvQueue; time_t timeLastWhoCommand; rbac::RBACData* _RBACData; + + WorldSession(WorldSession const& right) DELETE_MEMBER; + WorldSession& operator=(WorldSession const& right) DELETE_MEMBER; }; #endif /// @} diff --git a/src/server/game/Server/WorldSocket.h b/src/server/game/Server/WorldSocket.h index 103d60346e8..4e356df4d94 100644 --- a/src/server/game/Server/WorldSocket.h +++ b/src/server/game/Server/WorldSocket.h @@ -208,6 +208,8 @@ class WorldSocket : public WorldHandler uint32 m_Seed; + WorldSocket(WorldSocket const& right) DELETE_MEMBER; + WorldSocket& operator=(WorldSocket const& right) DELETE_MEMBER; }; #endif /* _WORLDSOCKET_H */ diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index e87e2c2085a..a65aa6b589f 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -688,6 +688,9 @@ class Spell double rand_norm() { return m_caster->GetMap()->mtRand.randExc(); } double rand_chance() { return m_caster->GetMap()->mtRand.randExc(100.0); } #endif + + Spell(Spell const& right) DELETE_MEMBER; + Spell& operator=(Spell const& right) DELETE_MEMBER; }; namespace Trinity diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h index a58dcc82acc..7de093f66ea 100644 --- a/src/server/game/World/World.h +++ b/src/server/game/World/World.h @@ -491,14 +491,15 @@ struct CliCommandHolder CommandFinished* m_commandFinished; CliCommandHolder(void* callbackArg, const char *command, Print* zprint, CommandFinished* commandFinished) - : m_callbackArg(callbackArg), m_print(zprint), m_commandFinished(commandFinished) + : m_callbackArg(callbackArg), m_command(strdup(command)), m_print(zprint), m_commandFinished(commandFinished) { - size_t len = strlen(command)+1; - m_command = new char[len]; - memcpy(m_command, command, len); } - ~CliCommandHolder() { delete[] m_command; } + ~CliCommandHolder() { free(m_command); } + +private: + CliCommandHolder(CliCommandHolder const& right) DELETE_MEMBER; + CliCommandHolder& operator=(CliCommandHolder const& right) DELETE_MEMBER; }; typedef UNORDERED_MAP SessionMap; diff --git a/src/server/shared/DataStores/DBCFileLoader.h b/src/server/shared/DataStores/DBCFileLoader.h index c5194d20530..f26e07f8b50 100644 --- a/src/server/shared/DataStores/DBCFileLoader.h +++ b/src/server/shared/DataStores/DBCFileLoader.h @@ -106,5 +106,8 @@ class DBCFileLoader uint32 *fieldsOffset; unsigned char *data; unsigned char *stringTable; + + DBCFileLoader(DBCFileLoader const& right) DELETE_MEMBER; + DBCFileLoader& operator=(DBCFileLoader const& right) DELETE_MEMBER; }; #endif diff --git a/src/server/shared/DataStores/DBCStore.h b/src/server/shared/DataStores/DBCStore.h index 78f7bb28580..b337fb4be59 100644 --- a/src/server/shared/DataStores/DBCStore.h +++ b/src/server/shared/DataStores/DBCStore.h @@ -63,6 +63,10 @@ struct SqlDbc } } } + +private: + SqlDbc(SqlDbc const& right) DELETE_MEMBER; + SqlDbc& operator=(SqlDbc const& right) DELETE_MEMBER; }; template @@ -291,6 +295,9 @@ class DBCStorage T* dataTable; StringPoolList stringPoolList; + + DBCStorage(DBCStorage const& right) DELETE_MEMBER; + DBCStorage& operator=(DBCStorage const& right) DELETE_MEMBER; }; #endif diff --git a/src/server/shared/Database/DatabaseWorker.h b/src/server/shared/Database/DatabaseWorker.h index 14e92924ed2..734ec790027 100644 --- a/src/server/shared/Database/DatabaseWorker.h +++ b/src/server/shared/Database/DatabaseWorker.h @@ -18,6 +18,7 @@ #ifndef _WORKERTHREAD_H #define _WORKERTHREAD_H +#include "Define.h" #include #include @@ -33,9 +34,11 @@ class DatabaseWorker : protected ACE_Task_Base int wait() { return ACE_Task_Base::wait(); } private: - DatabaseWorker() : ACE_Task_Base() { } ACE_Activation_Queue* m_queue; MySQLConnection* m_conn; + + DatabaseWorker(DatabaseWorker const& right) DELETE_MEMBER; + DatabaseWorker& operator=(DatabaseWorker const& right) DELETE_MEMBER; }; #endif diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index e2ebda9e8ae..c60458323f7 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -49,8 +49,7 @@ class DatabaseWorkerPool { public: /* Activity state */ - DatabaseWorkerPool() : - _queue(new ACE_Activation_Queue()) + DatabaseWorkerPool() : _queue(new ACE_Activation_Queue()), _connectionInfo(NULL) { memset(_connectionCount, 0, sizeof(_connectionCount)); _connections.resize(IDX_SIZE); @@ -66,7 +65,7 @@ class DatabaseWorkerPool bool Open(const std::string& infoString, uint8 async_threads, uint8 synch_threads) { bool res = true; - _connectionInfo = MySQLConnectionInfo(infoString); + _connectionInfo = new MySQLConnectionInfo(infoString); TC_LOG_INFO("sql.driver", "Opening DatabasePool '%s'. Asynchronous connections: %u, synchronous connections: %u.", GetDatabaseName(), async_threads, synch_threads); @@ -75,7 +74,7 @@ class DatabaseWorkerPool _connections[IDX_ASYNC].resize(async_threads); for (uint8 i = 0; i < async_threads; ++i) { - T* t = new T(_queue, _connectionInfo); + T* t = new T(_queue, *_connectionInfo); res &= t->Open(); if (res) // only check mysql version if connection is valid WPFatal(mysql_get_server_version(t->GetHandle()) >= MIN_MYSQL_SERVER_VERSION, "TrinityCore does not support MySQL versions below 5.1"); @@ -87,7 +86,7 @@ class DatabaseWorkerPool _connections[IDX_SYNCH].resize(synch_threads); for (uint8 i = 0; i < synch_threads; ++i) { - T* t = new T(_connectionInfo); + T* t = new T(*_connectionInfo); res &= t->Open(); _connections[IDX_SYNCH][i] = t; ++_connectionCount[IDX_SYNCH]; @@ -134,6 +133,9 @@ class DatabaseWorkerPool delete _queue; TC_LOG_INFO("sql.driver", "All connections on DatabasePool '%s' closed.", GetDatabaseName()); + + delete _connectionInfo; + _connectionInfo = NULL; } /** @@ -507,7 +509,7 @@ class DatabaseWorkerPool char const* GetDatabaseName() const { - return _connectionInfo.database.c_str(); + return _connectionInfo->database.c_str(); } private: @@ -521,7 +523,7 @@ class DatabaseWorkerPool ACE_Activation_Queue* _queue; //! Queue shared by async worker threads. std::vector< std::vector > _connections; uint32 _connectionCount[2]; //! Counter of MySQL connections; - MySQLConnectionInfo _connectionInfo; + MySQLConnectionInfo* _connectionInfo; }; #endif diff --git a/src/server/shared/Database/MySQLConnection.h b/src/server/shared/Database/MySQLConnection.h index 161f459a7ad..e55e3dfc23a 100644 --- a/src/server/shared/Database/MySQLConnection.h +++ b/src/server/shared/Database/MySQLConnection.h @@ -38,8 +38,7 @@ enum ConnectionFlags struct MySQLConnectionInfo { - MySQLConnectionInfo() { } - MySQLConnectionInfo(const std::string& infoString) + explicit MySQLConnectionInfo(std::string const& infoString) { Tokenizer tokens(infoString, ';'); @@ -132,6 +131,9 @@ class MySQLConnection MySQLConnectionInfo& m_connectionInfo; //! Connection info (used for logging) ConnectionFlags m_connectionFlags; //! Connection flags (for preparing relevant statements) ACE_Thread_Mutex m_Mutex; + + MySQLConnection(MySQLConnection const& right) DELETE_MEMBER; + MySQLConnection& operator=(MySQLConnection const& right) DELETE_MEMBER; }; #endif diff --git a/src/server/shared/Database/PreparedStatement.h b/src/server/shared/Database/PreparedStatement.h index 6a4d03bfb4d..9ccd16e3d5c 100644 --- a/src/server/shared/Database/PreparedStatement.h +++ b/src/server/shared/Database/PreparedStatement.h @@ -101,6 +101,9 @@ class PreparedStatement MySQLPreparedStatement* m_stmt; uint32 m_index; std::vector statement_data; //- Buffer of parameters, not tied to MySQL in any way yet + + PreparedStatement(PreparedStatement const& right) DELETE_MEMBER; + PreparedStatement& operator=(PreparedStatement const& right) DELETE_MEMBER; }; //- Class of which the instances are unique per MySQLConnection @@ -145,6 +148,9 @@ class MySQLPreparedStatement uint32 m_paramCount; std::vector m_paramsSet; MYSQL_BIND* m_bind; + + MySQLPreparedStatement(MySQLPreparedStatement const& right) DELETE_MEMBER; + MySQLPreparedStatement& operator=(MySQLPreparedStatement const& right) DELETE_MEMBER; }; typedef ACE_Future PreparedQueryResultFuture; diff --git a/src/server/shared/Database/QueryResult.h b/src/server/shared/Database/QueryResult.h index 74320aeba19..a09506c6621 100644 --- a/src/server/shared/Database/QueryResult.h +++ b/src/server/shared/Database/QueryResult.h @@ -55,6 +55,9 @@ class ResultSet void CleanUp(); MYSQL_RES* _result; MYSQL_FIELD* _fields; + + ResultSet(ResultSet const& right) DELETE_MEMBER; + ResultSet& operator=(ResultSet const& right) DELETE_MEMBER; }; typedef Trinity::AutoPtr QueryResult; @@ -100,6 +103,8 @@ class PreparedResultSet void CleanUp(); bool _NextRow(); + PreparedResultSet(PreparedResultSet const& right) DELETE_MEMBER; + PreparedResultSet& operator=(PreparedResultSet const& right) DELETE_MEMBER; }; typedef Trinity::AutoPtr PreparedQueryResult; diff --git a/src/server/shared/Database/SQLOperation.h b/src/server/shared/Database/SQLOperation.h index 2c404c131ae..eb32b60c74d 100644 --- a/src/server/shared/Database/SQLOperation.h +++ b/src/server/shared/Database/SQLOperation.h @@ -69,6 +69,10 @@ class SQLOperation : public ACE_Method_Request virtual void SetConnection(MySQLConnection* con) { m_conn = con; } MySQLConnection* m_conn; + + private: + SQLOperation(SQLOperation const& right) DELETE_MEMBER; + SQLOperation& operator=(SQLOperation const& right) DELETE_MEMBER; }; #endif diff --git a/src/server/shared/Define.h b/src/server/shared/Define.h index 27973694818..1534e7e6354 100644 --- a/src/server/shared/Define.h +++ b/src/server/shared/Define.h @@ -73,9 +73,11 @@ #if COMPILER_HAS_CPP11_SUPPORT # define OVERRIDE override # define FINAL final +# define DELETE_MEMBER = delete #else # define OVERRIDE # define FINAL +# define DELETE_MEMBER #endif //COMPILER_HAS_CPP11_SUPPORT #define UI64FMTD ACE_UINT64_FORMAT_SPECIFIER diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index 33d33519c8f..bc46b87fa27 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -85,6 +85,8 @@ class ByteBuffer { } + virtual ~ByteBuffer() { } + void clear() { _storage.clear(); diff --git a/src/server/shared/Threading/Callback.h b/src/server/shared/Threading/Callback.h index b074ff49c3c..c3717228870 100644 --- a/src/server/shared/Threading/Callback.h +++ b/src/server/shared/Threading/Callback.h @@ -109,6 +109,9 @@ class QueryCallback ACE_Future _result; ParamType _param; uint8 _stage; + + QueryCallback(QueryCallback const& right) DELETE_MEMBER; + QueryCallback& operator=(QueryCallback const& right) DELETE_MEMBER; }; template @@ -201,6 +204,9 @@ class QueryCallback_2 ParamType1 _param_1; ParamType2 _param_2; uint8 _stage; + + QueryCallback_2(QueryCallback_2 const& right) DELETE_MEMBER; + QueryCallback_2& operator=(QueryCallback_2 const& right) DELETE_MEMBER; }; #endif \ No newline at end of file -- cgit v1.2.3 From 518190ee88e37e555a55f3679e348a16d9174e27 Mon Sep 17 00:00:00 2001 From: ZackTsuna Date: Sun, 20 Apr 2014 21:22:21 +0200 Subject: Core/Units: Don't set new power type if old power type is the same --- src/server/game/Entities/Unit/Unit.cpp | 3 +++ 1 file changed, 3 insertions(+) (limited to 'src') diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 615dc828564..979edcdafc7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -8635,6 +8635,9 @@ bool Unit::HandleOverrideClassScriptAuraProc(Unit* victim, uint32 /*damage*/, Au void Unit::setPowerType(Powers new_powertype) { + if (getPowerType() == new_powertype) + return; + SetByteValue(UNIT_FIELD_BYTES_0, 3, new_powertype); if (GetTypeId() == TYPEID_PLAYER) -- cgit v1.2.3