From 7262b0df4036595339d0fb2530577dc7ca49aa06 Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sun, 15 Feb 2026 01:31:51 +0100 Subject: [PATCH 1/2] bugfix(worldbuilder): Check list size before accessing first element in ObjectOptions::_FindOrDont. --- Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp | 2 +- GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp b/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp index 4c6a369f38d..13a7c13359c 100644 --- a/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp @@ -402,7 +402,7 @@ HTREEITEM ObjectOptions::_FindOrDont(const char* pLabel, HTREEITEM startPoint) std::list itemsToEx; itemsToEx.push_back(startPoint); - while (itemsToEx.front()) { + while (!itemsToEx.empty()) { char buffer[_MAX_PATH]; HTREEITEM hItem = itemsToEx.front(); itemsToEx.pop_front(); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp index c15e1d3657d..7ad2e228cf8 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp @@ -402,7 +402,7 @@ HTREEITEM ObjectOptions::_FindOrDont(const char* pLabel, HTREEITEM startPoint) std::list itemsToEx; itemsToEx.push_back(startPoint); - while (itemsToEx.front()) { + while (!itemsToEx.empty()) { char buffer[_MAX_PATH]; HTREEITEM hItem = itemsToEx.front(); itemsToEx.pop_front(); From 2f5d827058a47d9d2c59bfe3366240a73018b4da Mon Sep 17 00:00:00 2001 From: Caball009 <82909616+Caball009@users.noreply.github.com> Date: Sun, 15 Feb 2026 01:42:24 +0100 Subject: [PATCH 2/2] Changed loops. --- Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp | 2 +- GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp b/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp index 13a7c13359c..c99bf894b1d 100644 --- a/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp +++ b/Generals/Code/Tools/WorldBuilder/src/ObjectOptions.cpp @@ -402,7 +402,7 @@ HTREEITEM ObjectOptions::_FindOrDont(const char* pLabel, HTREEITEM startPoint) std::list itemsToEx; itemsToEx.push_back(startPoint); - while (!itemsToEx.empty()) { + while (!itemsToEx.empty() && itemsToEx.front()) { char buffer[_MAX_PATH]; HTREEITEM hItem = itemsToEx.front(); itemsToEx.pop_front(); diff --git a/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp b/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp index 7ad2e228cf8..bbf4b7ee7e7 100644 --- a/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp +++ b/GeneralsMD/Code/Tools/WorldBuilder/src/ObjectOptions.cpp @@ -402,7 +402,7 @@ HTREEITEM ObjectOptions::_FindOrDont(const char* pLabel, HTREEITEM startPoint) std::list itemsToEx; itemsToEx.push_back(startPoint); - while (!itemsToEx.empty()) { + while (!itemsToEx.empty() && itemsToEx.front()) { char buffer[_MAX_PATH]; HTREEITEM hItem = itemsToEx.front(); itemsToEx.pop_front();