diff options
| author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2021-01-06 20:25:05 +0100 |
|---|---|---|
| committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2021-01-06 23:40:50 +0100 |
| commit | 6fbe0a494b9945f7adcc8603ebfbfeb040f718ba (patch) | |
| tree | 1deb0db29e89cb1ca37e8834e5d089fe876390dc /editor/editor_properties.cpp | |
| parent | 8158d17edf18e3d6ec847d2cb710012361e7b12e (diff) | |
| download | redot-engine-6fbe0a494b9945f7adcc8603ebfbfeb040f718ba.tar.gz | |
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 143eea88e1..8ac48ece70 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(); |
