diff options
| author | Shauren <shauren.trinity@gmail.com> | 2022-12-22 14:11:55 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2022-12-22 14:11:55 +0100 |
| commit | 7dc25889c6f8785a8d8a98c990e2421ca9b2a0c7 (patch) | |
| tree | a0e3cf393341ec0c2e39eb0d76e63485bfb49131 /src | |
| parent | 984d9725745f522b45bbefa32c4f06ab1b2eae88 (diff) | |
Core/Instances: Fixed assertion failure with instance id based lockouts
Closes #28613
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Instances/InstanceLockMgr.cpp | 4 | ||||
| -rw-r--r-- | src/server/game/Instances/InstanceLockMgr.h | 8 |
2 files changed, 4 insertions, 8 deletions
diff --git a/src/server/game/Instances/InstanceLockMgr.cpp b/src/server/game/Instances/InstanceLockMgr.cpp index d0353ad00b0..7ce1dcdbbaf 100644 --- a/src/server/game/Instances/InstanceLockMgr.cpp +++ b/src/server/game/Instances/InstanceLockMgr.cpp @@ -397,8 +397,10 @@ void InstanceLockMgr::UpdateSharedInstanceLock(CharacterDatabaseTransaction tran auto sharedDataItr = _instanceLockDataById.find(updateEvent.InstanceId); ASSERT(sharedDataItr != _instanceLockDataById.end()); std::shared_ptr<SharedInstanceLockData> sharedData = sharedDataItr->second.lock(); - ASSERT(sharedData && sharedData->InstanceId == updateEvent.InstanceId); + ASSERT(sharedData); + ASSERT(!sharedData->InstanceId || sharedData->InstanceId == updateEvent.InstanceId); sharedData->Data = std::move(updateEvent.NewData); + sharedData->InstanceId = updateEvent.InstanceId; if (updateEvent.CompletedEncounter) { sharedData->CompletedEncountersMask |= 1u << updateEvent.CompletedEncounter->Bit; diff --git a/src/server/game/Instances/InstanceLockMgr.h b/src/server/game/Instances/InstanceLockMgr.h index b860335b48f..84edcd90621 100644 --- a/src/server/game/Instances/InstanceLockMgr.h +++ b/src/server/game/Instances/InstanceLockMgr.h @@ -96,7 +96,7 @@ public: Difficulty GetDifficultyId() const { return _difficultyId; } uint32 GetInstanceId() const { return _instanceId; } - virtual void SetInstanceId(uint32 instanceId) { _instanceId = instanceId; } + void SetInstanceId(uint32 instanceId) { _instanceId = instanceId; } InstanceResetTimePoint GetExpiryTime() const { return _expiryTime; } void SetExpiryTime(InstanceResetTimePoint expiryTime) { _expiryTime = expiryTime; } @@ -143,12 +143,6 @@ class TC_GAME_API SharedInstanceLock : public InstanceLock public: SharedInstanceLock(uint32 mapId, Difficulty difficultyId, InstanceResetTimePoint expiryTime, uint32 instanceId, std::shared_ptr<SharedInstanceLockData> sharedData); - void SetInstanceId(uint32 instanceId) override - { - InstanceLock::SetInstanceId(instanceId); - _sharedData->InstanceId = instanceId; - } - InstanceLockData const* GetInstanceInitializationData() const override { return _sharedData.get(); } SharedInstanceLockData* GetSharedData() { return _sharedData.get(); } |
