diff options
| author | ariel- <ariel.silva305@gmail.com> | 2016-03-02 22:02:45 -0300 |
|---|---|---|
| committer | ariel- <ariel.silva305@gmail.com> | 2016-03-02 23:31:22 -0300 |
| commit | 3a7f311547bd4301abd102eb785c050d5436dce9 (patch) | |
| tree | 54e11b1a6f850a7b0b0e94ed08b3e7aff29f7ece /src/server/game/Entities/Object | |
| parent | d0263c03fd7cc7291b2eed2a3ca027cf1a8926e2 (diff) | |
Core/Conditions: fix a memory leak for CONDITION_SOURCE_TYPE_TERRAIN_SWAP
Reported by Aokromes.
Diffstat (limited to 'src/server/game/Entities/Object')
| -rw-r--r-- | src/server/game/Entities/Object/Object.cpp | 32 |
1 files changed, 16 insertions, 16 deletions
diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index 662d3888159..064aafb5cf7 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -3112,26 +3112,26 @@ void WorldObject::RebuildTerrainSwaps() // Check all applied phases for terrain swap and add it only once for (uint32 phaseId : _phases) { - if (std::vector<PhaseInfoStruct> const* swaps = sObjectMgr->GetPhaseTerrainSwaps(phaseId)) + if (std::vector<uint32> const* swaps = sObjectMgr->GetPhaseTerrainSwaps(phaseId)) { - for (PhaseInfoStruct const& swap : *swaps) + for (uint32 const& swap : *swaps) { // only add terrain swaps for current map - MapEntry const* mapEntry = sMapStore.LookupEntry(swap.Id); + MapEntry const* mapEntry = sMapStore.LookupEntry(swap); if (!mapEntry || mapEntry->ParentMapID != int32(GetMapId())) continue; - if (sConditionMgr->IsObjectMeetToConditions(this, swap.Conditions)) - _terrainSwaps.insert(swap.Id); + if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, swap, this)) + _terrainSwaps.insert(swap); } } } // get default terrain swaps, only for current map always - if (std::vector<PhaseInfoStruct> const* mapSwaps = sObjectMgr->GetDefaultTerrainSwaps(GetMapId())) - for (PhaseInfoStruct const& swap : *mapSwaps) - if (sConditionMgr->IsObjectMeetToConditions(this, swap.Conditions)) - _terrainSwaps.insert(swap.Id); + if (std::vector<uint32> const* mapSwaps = sObjectMgr->GetDefaultTerrainSwaps(GetMapId())) + for (uint32 const& swap : *mapSwaps) + if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, swap, this)) + _terrainSwaps.insert(swap); // online players have a game client with world map display if (GetTypeId() == TYPEID_PLAYER) @@ -3147,18 +3147,18 @@ void WorldObject::RebuildWorldMapAreaSwaps() // send the worldmaparea for it, to see swapped worldmaparea in client from other maps too, not just from our current TerrainPhaseInfo const& defaults = sObjectMgr->GetDefaultTerrainSwapStore(); for (TerrainPhaseInfo::const_iterator itr = defaults.begin(); itr != defaults.end(); ++itr) - for (PhaseInfoStruct const& swap : itr->second) - if (std::vector<uint32> const* uiMapSwaps = sObjectMgr->GetTerrainWorldMaps(swap.Id)) - if (sConditionMgr->IsObjectMeetToConditions(this, swap.Conditions)) + for (uint32 const& swap : itr->second) + if (std::vector<uint32> const* uiMapSwaps = sObjectMgr->GetTerrainWorldMaps(swap)) + if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, swap, this)) for (uint32 worldMapAreaId : *uiMapSwaps) _worldMapAreaSwaps.insert(worldMapAreaId); // Check all applied phases for world map area swaps for (uint32 phaseId : _phases) - if (std::vector<PhaseInfoStruct> const* swaps = sObjectMgr->GetPhaseTerrainSwaps(phaseId)) - for (PhaseInfoStruct const& swap : *swaps) - if (std::vector<uint32> const* uiMapSwaps = sObjectMgr->GetTerrainWorldMaps(swap.Id)) - if (sConditionMgr->IsObjectMeetToConditions(this, swap.Conditions)) + if (std::vector<uint32> const* swaps = sObjectMgr->GetPhaseTerrainSwaps(phaseId)) + for (uint32 const& swap : *swaps) + if (std::vector<uint32> const* uiMapSwaps = sObjectMgr->GetTerrainWorldMaps(swap)) + if (sConditionMgr->IsObjectMeetingNotGroupedConditions(CONDITION_SOURCE_TYPE_TERRAIN_SWAP, swap, this)) for (uint32 worldMapAreaId : *uiMapSwaps) _worldMapAreaSwaps.insert(worldMapAreaId); } |
