From 34da0cda5195dede48cb0406b23248330d6249cb Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Tue, 15 Jun 2021 12:02:03 +0200 Subject: [PATCH] fix(Script/URBS): Potential crash in Dragonspire Room (#6330) * cherry-picked from commit (https://github.com/TrinityCore/TrinityCore/commit/e9a8cea018591334ce3807e2eb2fc2d6ce079252) Co-Authored-By: Giacomo Pozzoni Co-authored-by: Giacomo Pozzoni --- .../BlackrockSpire/instance_blackrock_spire.cpp | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp index f264224c6..697fece12 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockSpire/instance_blackrock_spire.cpp @@ -393,11 +393,11 @@ public: void Dragonspireroomstore() { - uint8 creatureCount; for (uint8 i = 0; i < 7; ++i) { - creatureCount = 0; + // Refresh the creature list + runecreaturelist[i].clear(); if (GameObject* rune = instance->GetGameObject(go_roomrunes[i])) { @@ -409,8 +409,7 @@ public: { if (Creature* creature = *itr) { - runecreaturelist[i][creatureCount] = creature->GetGUID(); - ++creatureCount; + runecreaturelist[i].push_back(creature->GetGUID()); } } } @@ -432,9 +431,9 @@ public: if (rune->GetGoState() == GO_STATE_ACTIVE) { - for (uint8 ii = 0; ii < 5; ++ii) + for (ObjectGuid const& guid : runecreaturelist[i]) { - mob = instance->GetCreature(runecreaturelist[i][ii]); + mob = instance->GetCreature(guid); if (mob && mob->IsAlive()) _mobAlive = true; } @@ -554,7 +553,7 @@ public: ObjectGuid go_blackrockaltar; ObjectGuid go_roomrunes[7]; ObjectGuid go_emberseerrunes[7]; - ObjectGuid runecreaturelist[7][5]; + GuidVector runecreaturelist[7]; ObjectGuid go_portcullis_active; ObjectGuid go_portcullis_tobossrooms; ObjectGuid go_urok_pile;