aboutsummaryrefslogtreecommitdiff
path: root/modules/gdscript/gd_script.cpp
diff options
context:
space:
mode:
authorKarroffel2017-04-24 18:51:39 +0200
committerRémi Verschelde2017-05-26 18:53:28 +0200
commite151b66127ec9999b8fdef784aca79560082b9f9 (patch)
treee90de8774cdc00153b2be637af20e9ec8fac3ef1 /modules/gdscript/gd_script.cpp
parent3d7756df8e1d02161fd182dcdf1119c38a353d0c (diff)
downloadgodot-e151b66127ec9999b8fdef784aca79560082b9f9.tar.gz
godot-e151b66127ec9999b8fdef784aca79560082b9f9.tar.zst
godot-e151b66127ec9999b8fdef784aca79560082b9f9.zip
Diffstat (limited to 'modules/gdscript/gd_script.cpp')
-rw-r--r--modules/gdscript/gd_script.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/modules/gdscript/gd_script.cpp b/modules/gdscript/gd_script.cpp
index 072948b95..3b3d3f1db 100644
--- a/modules/gdscript/gd_script.cpp
+++ b/modules/gdscript/gd_script.cpp
@@ -1533,8 +1533,8 @@ void GDScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_so
#ifdef TOOLS_ENABLED
while (E->get()->placeholders.size()) {
-
Object *obj = E->get()->placeholders.front()->get()->get_owner();
+
//save instance info
List<Pair<StringName, Variant> > state;
if (obj->get_script_instance()) {
@@ -1542,6 +1542,9 @@ void GDScriptLanguage::reload_tool_script(const Ref<Script> &p_script, bool p_so
obj->get_script_instance()->get_property_state(state);
map[obj->get_instance_ID()] = state;
obj->set_script(RefPtr());
+ } else {
+ // no instance found. Let's remove it so we don't loop forever
+ E->get()->placeholders.erase(E->get()->placeholders.front()->get());
}
}
#endif