From 81b6000812983ee6d113921bc62c47ebd8d5611f Mon Sep 17 00:00:00 2001 From: Stijn Hinlopen Date: Wed, 1 Jul 2020 22:57:08 +0200 Subject: [PATCH] Fix crash by calculating wrong size of array. --- editor/scene_tree_dock.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 9831f1bd3165..a567d8a1488c 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -354,11 +354,15 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) { // Prefer nodes that inherit from the current scene root. Node *current_edited_scene_root = EditorNode::get_singleton()->get_edited_scene(); if (current_edited_scene_root) { - static const String preferred_types[] = { "Node2D", "Node3D", "Control" }; + String root_class = current_edited_scene_root->get_class_name(); + static Vector preferred_types; + if (preferred_types.empty()) { + preferred_types.push_back("Control"); + preferred_types.push_back("Node2D"); + preferred_types.push_back("Node3D"); + } - StringName root_class = current_edited_scene_root->get_class_name(); - - for (int i = 0; i < preferred_types->size(); i++) { + for (int i = 0; i < preferred_types.size(); i++) { if (ClassDB::is_parent_class(root_class, preferred_types[i])) { create_dialog->set_preferred_search_result_type(preferred_types[i]); break;