Explorar el Código

Merge pull request #102510 from timothyqiu/selection-erase

Fix heap-use-after-free when changing 2D editor selection
Thaddeus Crews hace 8 meses
padre
commit
29ded6b031
Se han modificado 1 ficheros con 5 adiciones y 3 borrados
  1. 5 3
      editor/plugins/canvas_item_editor_plugin.cpp

+ 5 - 3
editor/plugins/canvas_item_editor_plugin.cpp

@@ -3659,10 +3659,12 @@ void CanvasItemEditor::_draw_selection() {
 	}
 	}
 
 
 	// Remove non-movable nodes.
 	// Remove non-movable nodes.
-	for (CanvasItem *ci : selection) {
-		if (!_is_node_movable(ci)) {
-			selection.erase(ci);
+	for (List<CanvasItem *>::Element *E = selection.front(); E;) {
+		List<CanvasItem *>::Element *N = E->next();
+		if (!_is_node_movable(E->get())) {
+			selection.erase(E);
 		}
 		}
+		E = N;
 	}
 	}
 
 
 	if (!selection.is_empty() && transform_tool && show_transformation_gizmos) {
 	if (!selection.is_empty() && transform_tool && show_transformation_gizmos) {