summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRémi Verschelde <rverschelde@gmail.com>2024-04-08 11:20:21 +0200
committerRémi Verschelde <rverschelde@gmail.com>2024-04-08 11:20:21 +0200
commit84af65d4ba8456de1a8c4b78a4c9720b1fda920c (patch)
tree24ec9d266d4376af45ef477be90ad2edc988bec0
parenta2f6698098782ed26153c45eb0296d615a369705 (diff)
parent4848bf4fd8ad221ce1a70c7085f1c14b154e4cca (diff)
downloadredot-engine-84af65d4ba8456de1a8c4b78a4c9720b1fda920c.tar.gz
Merge pull request #89801 from timothyqiu/lost-group
Fix heap-use-after-free when converting scene group to global
-rw-r--r--editor/groups_editor.cpp10
1 files changed, 7 insertions, 3 deletions
diff --git a/editor/groups_editor.cpp b/editor/groups_editor.cpp
index bec13b710d..c4e38b327a 100644
--- a/editor/groups_editor.cpp
+++ b/editor/groups_editor.cpp
@@ -157,10 +157,14 @@ void GroupsEditor::_update_groups() {
_load_scene_groups(scene_root_node);
- for (const KeyValue<StringName, bool> &E : scene_groups) {
- if (global_groups.has(E.key)) {
- scene_groups.erase(E.key);
+ for (HashMap<StringName, bool>::Iterator E = scene_groups.begin(); E;) {
+ HashMap<StringName, bool>::Iterator next = E;
+ ++next;
+
+ if (global_groups.has(E->key)) {
+ scene_groups.erase(E->key);
}
+ E = next;
}
updating_groups = false;