diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-07-15 08:01:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-07-15 08:01:06 +0200 |
commit | 0471e4d578d6675a4c20d8b6a328a456cfd84a4a (patch) | |
tree | 802fea5d0fb82aef818c7e15948cf805ed33e05d | |
parent | 23f5154de7cce553709defbde8944beab1870988 (diff) | |
parent | dd1589b2bc969e5f0d3ccee691b886fe735e0182 (diff) |
Merge pull request #30543 from kawa-yoiko/editor-script-typecheck
Fix potential crash caused by type mismatch in Ref
-rw-r--r-- | editor/scene_tree_editor.cpp | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/editor/scene_tree_editor.cpp b/editor/scene_tree_editor.cpp index 445ca3a792..c1a14685b0 100644 --- a/editor/scene_tree_editor.cpp +++ b/editor/scene_tree_editor.cpp @@ -70,7 +70,8 @@ void SceneTreeEditor::_cell_button_pressed(Object *p_item, int p_column, int p_i } } else if (p_id == BUTTON_SCRIPT) { RefPtr script = n->get_script(); - if (!script.is_null()) + Ref<Script> script_typed = script; + if (!script_typed.is_null()) emit_signal("open_script", script); } else if (p_id == BUTTON_VISIBILITY) { @@ -210,7 +211,8 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { if (connect_to_script_mode) { Color accent = get_color("accent_color", "Editor"); - if (!p_node->get_script().is_null()) { + Ref<Script> script = p_node->get_script(); + if (!script.is_null()) { //has script item->add_button(0, get_icon("Script", "EditorIcons"), BUTTON_SCRIPT); } else { @@ -290,8 +292,8 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent) { if (!p_node->is_connected("script_changed", this, "_node_script_changed")) p_node->connect("script_changed", this, "_node_script_changed", varray(p_node)); - if (!p_node->get_script().is_null()) { - Ref<Script> script = p_node->get_script(); + Ref<Script> script = p_node->get_script(); + if (!script.is_null()) { item->add_button(0, get_icon("Script", "EditorIcons"), BUTTON_SCRIPT, false, TTR("Open Script:") + " " + script->get_path()); } |