From 1b22d87f913c2a93913701c5f1183d64a4cd77ae Mon Sep 17 00:00:00 2001 From: Ovahlord Date: Fri, 13 Jun 2025 20:19:56 +0200 Subject: [PATCH] Core/Player: converted void storage items to smart pointers --- src/server/game/Entities/Player/Player.cpp | 16 +++++----------- src/server/game/Entities/Player/Player.h | 2 +- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0455862b0b..89a198c259 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -344,8 +344,6 @@ Player::Player(WorldSession* session): Unit(true) _maxPersonalArenaRate = 0; - _voidStorageItems.fill(nullptr); - _cinematicMgr = std::make_unique(this); m_achievementMgr = std::make_unique>(this); m_reputationMgr = std::make_unique(this); @@ -373,9 +371,6 @@ Player::~Player() for (size_t x = 0; x < ItemSetEff.size(); x++) delete ItemSetEff[x]; - for (size_t i = 0; i < _voidStorageItems.size(); ++i) - delete _voidStorageItems[i]; - for (uint8 i = 0; i < PlayerPetDataStore.size(); i++) delete PlayerPetDataStore[i]; @@ -17552,7 +17547,7 @@ void Player::_LoadVoidStorage(PreparedQueryResult result) creatorGuid.Clear(); } - _voidStorageItems[slot] = new VoidStorageItem(itemId, itemEntry, creatorGuid, randomProperty, suffixFactor); + _voidStorageItems[slot] = std::make_unique(itemId, itemEntry, creatorGuid, randomProperty, suffixFactor); } while (result->NextRow()); } @@ -27063,7 +27058,7 @@ uint8 Player::AddVoidStorageItem(VoidStorageItem const& item) return 255; } - _voidStorageItems[slot] = new VoidStorageItem(item.ItemId, item.ItemEntry, + _voidStorageItems[slot] = std::make_unique(item.ItemId, item.ItemEntry, item.CreatorGuid, item.ItemRandomPropertyId, item.ItemSuffixFactor); return slot; } @@ -27083,7 +27078,7 @@ void Player::AddVoidStorageItemAtSlot(uint8 slot, const VoidStorageItem& item) return; } - _voidStorageItems[slot] = new VoidStorageItem(item.ItemId, item.ItemId, + _voidStorageItems[slot] = std::make_unique(item.ItemId, item.ItemId, item.CreatorGuid, item.ItemRandomPropertyId, item.ItemSuffixFactor); } @@ -27095,7 +27090,6 @@ void Player::DeleteVoidStorageItem(uint8 slot) return; } - delete _voidStorageItems[slot]; _voidStorageItems[slot] = nullptr; } @@ -27116,7 +27110,7 @@ VoidStorageItem* Player::GetVoidStorageItem(uint8 slot) const return nullptr; } - return _voidStorageItems[slot]; + return _voidStorageItems[slot].get(); } VoidStorageItem* Player::GetVoidStorageItem(uint64 id, uint8& slot) const @@ -27126,7 +27120,7 @@ VoidStorageItem* Player::GetVoidStorageItem(uint64 id, uint8& slot) const if (_voidStorageItems[i] && _voidStorageItems[i]->ItemId == id) { slot = i; - return _voidStorageItems[i]; + return _voidStorageItems[i].get(); } } diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 1ca4a53a55..c85cf61d24 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -2583,7 +2583,7 @@ class TC_GAME_API Player : public Unit, public GridObject /// Updates weekly conquest point cap (dynamic cap) void UpdateConquestCurrencyCap(uint32 currency); - std::array _voidStorageItems; + std::array, VOID_STORAGE_MAX_SLOT> _voidStorageItems; std::vector m_itemUpdateQueue; bool m_itemUpdateQueueBlocked;