From 61890bce7cf5abb2fbf536e07da233ff7d4cedb0 Mon Sep 17 00:00:00 2001 From: jackpoz Date: Wed, 26 Feb 2014 21:44:51 +0100 Subject: Scripts/Onyxia Lair: Fix debug assertions about iterators --- .../Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index e028fab67e5..678a79c51ad 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -212,13 +212,24 @@ public: { if (eruptTimer <= diff) { - uint32 treeHeight = 0; - do + uint64 frontGuid = FloorEruptionGUIDQueue.front(); + std::map::iterator itr = FloorEruptionGUID[1].find(frontGuid); + if (itr != FloorEruptionGUID[1].end()) { - treeHeight = (*FloorEruptionGUID[1].find(FloorEruptionGUIDQueue.front())).second; - FloorEruption(FloorEruptionGUIDQueue.front()); - FloorEruptionGUIDQueue.pop(); - } while (!FloorEruptionGUIDQueue.empty() && (*FloorEruptionGUID[1].find(FloorEruptionGUIDQueue.front())).second == treeHeight); + uint32 treeHeight = itr->second; + + do + { + FloorEruption(frontGuid); + FloorEruptionGUIDQueue.pop(); + if (FloorEruptionGUIDQueue.empty()) + break; + + frontGuid = FloorEruptionGUIDQueue.front(); + itr = FloorEruptionGUID[1].find(frontGuid); + } while (itr != FloorEruptionGUID[1].end() && itr->second == treeHeight); + } + eruptTimer = 1000; } else -- cgit v1.2.3