summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStijn Hinlopen <f.a.hinlopen@gmail.com>2020-07-01 22:57:08 +0200
committerStijn Hinlopen <f.a.hinlopen@gmail.com>2020-07-02 10:58:41 +0200
commit81b6000812983ee6d113921bc62c47ebd8d5611f (patch)
tree77cce6647531a79154fe8742d88a1ab7c4b7109e
parent0a8dbe7f75f2999e0f73af83dda3510c965f2b94 (diff)
Fix crash by calculating wrong size of array.
-rw-r--r--editor/scene_tree_dock.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp
index 9831f1bd31..a567d8a148 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" };
-
- StringName root_class = current_edited_scene_root->get_class_name();
+ String root_class = current_edited_scene_root->get_class_name();
+ static Vector<String> preferred_types;
+ if (preferred_types.empty()) {
+ preferred_types.push_back("Control");
+ preferred_types.push_back("Node2D");
+ preferred_types.push_back("Node3D");
+ }
- 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;