From 1ce7aba5652d6e32a4f4dfa16d9714ed2af39085 Mon Sep 17 00:00:00 2001 From: past-due <30942300+past-due@users.noreply.github.com> Date: Sun, 16 Jul 2023 22:26:29 -0400 Subject: [PATCH] orderDroidBase: Fix possible crash if getModuleStat fails --- src/order.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/order.cpp b/src/order.cpp index 51eed889a54..d65734f772d 100644 --- a/src/order.cpp +++ b/src/order.cpp @@ -1530,8 +1530,9 @@ void orderDroidBase(DROID *psDroid, DROID_ORDER_DATA *psOrder) { break; } - psDroid->order = DroidOrder(DORDER_BUILD, getModuleStat((STRUCTURE *)psOrder->psObj), psOrder->psObj->pos.xy(), 0); - ASSERT_OR_RETURN(, psDroid->order.psStats != nullptr, "should have found a module stats"); + STRUCTURE_STATS *psStats = getModuleStat((STRUCTURE *)psOrder->psObj); + ASSERT_OR_RETURN(, psStats != nullptr, "should have found a module stats"); + psDroid->order = DroidOrder(DORDER_BUILD, psStats, psOrder->psObj->pos.xy(), 0); ASSERT_OR_RETURN(, !psDroid->order.psStats || psDroid->order.psStats->type != REF_DEMOLISH, "Cannot build demolition"); actionDroid(psDroid, DACTION_BUILD, psOrder->psObj->pos.x, psOrder->psObj->pos.y); objTrace(psDroid->id, "Starting new upgrade of %s", psOrder->psStats ? getStatsName(psOrder->psStats) : "NULL");