Browse Source

Merge pull request #8339 from karroffel/gdnative-reload-fix

[GDNative] Didn't iterate over all scripts
Rémi Verschelde 8 years ago
parent
commit
5598040e43
1 changed files with 11 additions and 13 deletions
  1. 11 13
      modules/gdnative/gdnative.cpp

+ 11 - 13
modules/gdnative/gdnative.cpp

@@ -1167,27 +1167,25 @@ void GDNativeReloadNode::_notification(int p_what) {
 
 				// update placeholders (if any)
 
-				GDNativeScript *script = NULL;
+				Set<GDNativeScript *> scripts;
 
 				for (Set<GDNativeScript *>::Element *S = GDNativeScriptLanguage::get_singleton()->script_list.front(); S; S = S->next()) {
 					if (lib->native_library->scripts.has(S->get()->get_script_name())) {
-						script = S->get();
+						GDNativeScript *script = S->get();
 						script->script_data = lib->get_script_data(script->get_script_name());
-						break;
+						scripts.insert(script);
 					}
 				}
 
-				if (script == NULL) {
-					// new class, cool. Nothing to do here
-					continue;
-				}
-
-				if (script->placeholders.size() == 0)
-					continue;
+				for (Set<GDNativeScript *>::Element *S = scripts.front(); S; S = S->next()) {
+					GDNativeScript *script = S->get();
+					if (script->placeholders.size() == 0)
+						continue;
 
-				for (Set<PlaceHolderScriptInstance *>::Element *P = script->placeholders.front(); P; P = P->next()) {
-					PlaceHolderScriptInstance *p = P->get();
-					script->_update_placeholder(p);
+					for (Set<PlaceHolderScriptInstance *>::Element *P = script->placeholders.front(); P; P = P->next()) {
+						PlaceHolderScriptInstance *p = P->get();
+						script->_update_placeholder(p);
+					}
 				}
 			}