diff options
| author | Rémi Verschelde <remi@verschelde.fr> | 2021-01-07 14:19:52 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-07 14:19:52 +0100 |
| commit | c7b45141de9538e06dee0f4fd7799ff75d5f4eff (patch) | |
| tree | b18169b4188c2bda6c5d52673812d4830d589a06 /editor/editor_properties.cpp | |
| parent | cf4c58838fb148a1087ddd7e5461cc2eb3c386ec (diff) | |
| parent | 6fbe0a494b9945f7adcc8603ebfbfeb040f718ba (diff) | |
| download | redot-engine-c7b45141de9538e06dee0f4fd7799ff75d5f4eff.tar.gz | |
Merge pull request #44980 from RandomShaper/fix_res_lifetime
Fix cases of resources destroyed too early
Diffstat (limited to 'editor/editor_properties.cpp')
| -rw-r--r-- | editor/editor_properties.cpp | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/editor/editor_properties.cpp b/editor/editor_properties.cpp index a358cddfae..3fa183e10c 100644 --- a/editor/editor_properties.cpp +++ b/editor/editor_properties.cpp @@ -2544,35 +2544,32 @@ void EditorPropertyResource::_menu_option(int p_which) { return; } - Object *obj = nullptr; - RES res_temp; + Variant obj; if (ScriptServer::is_global_class(intype)) { obj = ClassDB::instance(ScriptServer::get_global_class_native_base(intype)); if (obj) { - res_temp = obj; Ref<Script> script = ResourceLoader::load(ScriptServer::get_global_class_path(intype)); if (script.is_valid()) { - obj->set_script(Variant(script)); + ((Object *)obj)->set_script(script); } } } else { obj = ClassDB::instance(intype); - res_temp = obj; } if (!obj) { obj = EditorNode::get_editor_data().instance_custom_type(intype, "Resource"); - res_temp = obj; } - ERR_BREAK(!res_temp.is_valid()); + Resource *resp = Object::cast_to<Resource>(obj); + ERR_BREAK(!resp); if (get_edited_object() && base_type != String() && base_type == "Script") { //make visual script the right type - res_temp->call("set_instance_base_type", get_edited_object()->get_class()); + resp->call("set_instance_base_type", get_edited_object()->get_class()); } - res = res_temp; + res = RES(resp); emit_changed(get_edited_property(), res); update_property(); |
