diff options
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Movement/Traveller.h | 3 | ||||
-rwxr-xr-x | src/server/game/Movement/Waypoints/Path.h | 2 | ||||
-rwxr-xr-x | src/server/game/Movement/Waypoints/WaypointManager.cpp | 1 | ||||
-rw-r--r-- | src/server/scripts/World/npcs_special.cpp | 6 | ||||
-rwxr-xr-x | src/server/shared/DataStores/DBCStore.h | 65 |
5 files changed, 47 insertions, 30 deletions
diff --git a/src/server/game/Movement/Traveller.h b/src/server/game/Movement/Traveller.h index 17fb44edcaf..27700eb61c4 100755 --- a/src/server/game/Movement/Traveller.h +++ b/src/server/game/Movement/Traveller.h @@ -36,8 +36,7 @@ struct Traveller Traveller(const Traveller &obj) : i_traveller(obj) {} Traveller& operator=(const Traveller &obj) { - this->~Traveller(); - new (this) Traveller(obj); + this.i_traveller = obj.i_traveller; return *this; } diff --git a/src/server/game/Movement/Waypoints/Path.h b/src/server/game/Movement/Waypoints/Path.h index bb874d67413..f9a55513d10 100755 --- a/src/server/game/Movement/Waypoints/Path.h +++ b/src/server/game/Movement/Waypoints/Path.h @@ -54,7 +54,7 @@ class Path float GetTotalLength() const { return GetTotalLength(0, size()); } - float GetPassedLength(uint32 curnode, float x, float y, float z) + float GetPassedLength(uint32 curnode, float x, float y, float z) const { float len = GetTotalLength(0, curnode); diff --git a/src/server/game/Movement/Waypoints/WaypointManager.cpp b/src/server/game/Movement/Waypoints/WaypointManager.cpp index 3121a715895..869a594415e 100755 --- a/src/server/game/Movement/Waypoints/WaypointManager.cpp +++ b/src/server/game/Movement/Waypoints/WaypointManager.cpp @@ -20,6 +20,7 @@ #include "GridDefines.h" #include "WaypointManager.h" #include "MapManager.h" +#include "Log.h" WaypointMgr::WaypointMgr() { diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 22ce27d98cd..5ceab74efd1 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -1899,8 +1899,8 @@ public: void InitializeAI() { CasterAI::InitializeAI(); - Unit* owner = me->GetOwner(); - if (!owner) + uint64 owner_guid = me->GetOwnerGUID(); + if (!owner_guid) return; // Not needed to be despawned now despawnTimer = 0; @@ -1910,7 +1910,7 @@ public: Trinity::UnitListSearcher<Trinity::AnyUnfriendlyUnitInObjectRangeCheck> searcher(me, targets, u_check); me->VisitNearbyObject(30, searcher); for (std::list<Unit*>::const_iterator iter = targets.begin(); iter != targets.end(); ++iter) - if ((*iter)->GetAura(49206, owner->GetGUID())) + if ((*iter)->GetAura(49206, owner_guid)) { me->Attack((*iter), false); break; diff --git a/src/server/shared/DataStores/DBCStore.h b/src/server/shared/DataStores/DBCStore.h index 0a7059ffa21..bae253f4114 100755 --- a/src/server/shared/DataStores/DBCStore.h +++ b/src/server/shared/DataStores/DBCStore.h @@ -70,10 +70,17 @@ class DBCStorage { typedef std::list<char*> StringPoolList; public: - explicit DBCStorage(const char *f) : fmt(f), nCount(0), fieldCount(0), indexTable(NULL), m_dataTable(NULL) { } + explicit DBCStorage(const char *f) : + fmt(f), nCount(0), fieldCount(0), dataTable(NULL) + { + indexTable.asT = NULL; + } ~DBCStorage() { Clear(); } - T const* LookupEntry(uint32 id) const { return (id>=nCount)?NULL:indexTable[id]; } + T const* LookupEntry(uint32 id) const + { + return (id >= nCount) ? NULL : indexTable.asT[id]; + } uint32 GetNumRows() const { return nCount; } char const* GetFormat() const { return fmt; } uint32 GetFieldCount() const { return fieldCount; } @@ -95,7 +102,7 @@ class DBCStorage std::string query = "SELECT * FROM " + sql->sqlTableName; if (sql->indexPos >= 0) query +=" ORDER BY " + *sql->indexName + " DESC"; - query += ";"; + query += ';'; result = WorldDatabase.Query(query.c_str()); @@ -115,16 +122,19 @@ class DBCStorage } } } + char * sqlDataTable; fieldCount = dbc.GetCols(); - m_dataTable = (T*)dbc.AutoProduceData(fmt, nCount, (char**&)indexTable, sqlRecordCount, sqlHighestIndex, sqlDataTable); - m_stringPoolList.push_back(dbc.AutoProduceStrings(fmt, (char*)m_dataTable)); + dataTable = (T*)dbc.AutoProduceData(fmt, nCount, indexTable.asChar, + sqlRecordCount, sqlHighestIndex, sqlDataTable); + + stringPoolList.push_back(dbc.AutoProduceStrings(fmt, (char*)dataTable)); // Insert sql data into arrays if (result) { - if (indexTable) + if (indexTable.asT) { uint32 offset = 0; uint32 rowIndex = dbc.GetNumRows(); @@ -136,15 +146,15 @@ class DBCStorage if(sql->indexPos >= 0) { uint32 id = fields[sql->sqlIndexPos].GetUInt32(); - if (indexTable[id]) + if (indexTable.asT[id]) { sLog->outError("Index %d already exists in dbc:'%s'", id, sql->sqlTableName.c_str()); return false; } - indexTable[id]=(T*)&sqlDataTable[offset]; + indexTable.asT[id]=(T*)&sqlDataTable[offset]; } else - indexTable[rowIndex]=(T*)&sqlDataTable[offset]; + indexTable.asT[rowIndex]=(T*)&sqlDataTable[offset]; uint32 columnNumber = 0; uint32 sqlColumnNumber = 0; @@ -169,7 +179,7 @@ class DBCStorage break; case FT_STRING: // Beginning of the pool - empty string - *((char**)(&sqlDataTable[offset]))=m_stringPoolList.back(); + *((char**)(&sqlDataTable[offset]))=stringPoolList.back(); offset+=sizeof(char*); break; } @@ -222,13 +232,13 @@ class DBCStorage } // error in dbc file at loading if NULL - return indexTable!=NULL; + return indexTable.asT != NULL; } bool LoadStringsFrom(char const* fn) { // DBC must be already loaded using Load - if(!indexTable) + if (!indexTable.asT) return false; DBCFileLoader dbc; @@ -236,25 +246,25 @@ class DBCStorage if(!dbc.Load(fn, fmt)) return false; - m_stringPoolList.push_back(dbc.AutoProduceStrings(fmt, (char*)m_dataTable)); + stringPoolList.push_back(dbc.AutoProduceStrings(fmt, (char*)dataTable)); return true; } void Clear() { - if (!indexTable) + if (!indexTable.asT) return; - delete[] ((char*)indexTable); - indexTable = NULL; - delete[] ((char*)m_dataTable); - m_dataTable = NULL; + delete[] ((char*)indexTable.asT); + indexTable.asT = NULL; + delete[] ((char*)dataTable); + dataTable = NULL; - while(!m_stringPoolList.empty()) + while(!stringPoolList.empty()) { - delete[] m_stringPoolList.front(); - m_stringPoolList.pop_front(); + delete[] stringPoolList.front(); + stringPoolList.pop_front(); } nCount = 0; } @@ -263,9 +273,16 @@ class DBCStorage char const* fmt; uint32 nCount; uint32 fieldCount; - T** indexTable; - T* m_dataTable; - StringPoolList m_stringPoolList; + + union + { + T** asT; + char** asChar; + } + indexTable; + + T* dataTable; + StringPoolList stringPoolList; }; #endif |