Procházet zdrojové kódy

Merge pull request #70732 from timothyqiu/tilemap-crash

Fix heap-use-after-free when using TileMap editor
Rémi Verschelde před 2 roky
rodič
revize
2a57a5e63f
1 změnil soubory, kde provedl 3 přidání a 1 odebrání
  1. 3 1
      editor/plugins/tiles/tile_map_editor.cpp

+ 3 - 1
editor/plugins/tiles/tile_map_editor.cpp

@@ -1488,13 +1488,15 @@ void TileMapEditorTilesPlugin::_update_fix_selected_and_hovered() {
 	}
 
 	// Selection if needed.
-	for (RBSet<TileMapCell>::Element *E = tile_set_selection.front(); E; E = E->next()) {
+	for (RBSet<TileMapCell>::Element *E = tile_set_selection.front(); E;) {
+		RBSet<TileMapCell>::Element *N = E->next();
 		const TileMapCell *selected = &(E->get());
 		if (!tile_set->has_source(selected->source_id) ||
 				!tile_set->get_source(selected->source_id)->has_tile(selected->get_atlas_coords()) ||
 				!tile_set->get_source(selected->source_id)->has_alternative_tile(selected->get_atlas_coords(), selected->alternative_tile)) {
 			tile_set_selection.erase(E);
 		}
+		E = N;
 	}
 
 	if (!tile_map_selection.is_empty()) {