From fc547f5adafb6b3d545eae28cf3810160fb96aaf Mon Sep 17 00:00:00 2001 From: Christoph Oelckers Date: Sat, 28 Jan 2023 10:59:27 +0100 Subject: [PATCH] - Blood: fixed bad array resize. --- source/games/blood/src/nnexts.cpp | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/source/games/blood/src/nnexts.cpp b/source/games/blood/src/nnexts.cpp index 77147f2b9..32c303d3e 100644 --- a/source/games/blood/src/nnexts.cpp +++ b/source/games/blood/src/nnexts.cpp @@ -800,7 +800,6 @@ void nnExtInitModernStuff(TArray& actors) { if (iactor->xspr.busyTime <= 0 || iactor->xspr.isTriggered) continue; - int count = 0; TRCONDITION* pCond = &gConditions[gConditions.Reserve(1)]; for (auto iactor2 : actors) @@ -818,18 +817,18 @@ void nnExtInitModernStuff(TArray& actors) if (iactor2->spr.type == kModernCondition || iactor2->spr.type == kModernConditionFalse) condError(iactor, "Tracking condition always must be first in condition sequence!"); - pCond->objects.Reserve(2); - pCond->objects[count].obj = EventObject(iactor2); - pCond->objects[count++].cmd = (uint8_t)iactor2->xspr.command; + pCond->objects.Reserve(1); + pCond->objects.Last().obj = EventObject(iactor2); + pCond->objects.Last().cmd = (uint8_t)iactor2->xspr.command; } for (auto& sect : sector) { if (!sect.hasX() || sect.xs().txID != iactor->xspr.rxID) continue; - pCond->objects.Reserve(2); - pCond->objects[count].obj = EventObject(§); - pCond->objects[count++].cmd = sect.xs().command; + pCond->objects.Reserve(1); + pCond->objects.Last().obj = EventObject(§); + pCond->objects.Last().cmd = sect.xs().command; } for (auto& wal : wall) @@ -843,12 +842,12 @@ void nnExtInitModernStuff(TArray& actors) continue; } - pCond->objects.Reserve(2); - pCond->objects[count].obj = EventObject(&wal); - pCond->objects[count++].cmd = wal.xw().command; + pCond->objects.Reserve(1); + pCond->objects.Last().obj = EventObject(&wal); + pCond->objects.Last().cmd = wal.xw().command; } - if (iactor->xspr.data1 > kCondGameMax && count == 0) + if (iactor->xspr.data1 > kCondGameMax && pCond->objects.Size() == 0) Printf(PRINT_HIGH, "No objects to track found for condition #%d, RXID: %d!", iactor->GetIndex(), iactor->xspr.rxID); pCond->actor = iactor;