Browse Source

[NativeScript] fixed optional _init call

In 3c53b35 a call to an "_init" function was introduced,
that however was only executed in the `_new` function,
also it *required* that such a function exists.

With this patch the "_init" function will be optionally called on
every instance creation.
Karroffel 8 years ago
parent
commit
3185c9c374
1 changed files with 6 additions and 18 deletions
  1. 6 18
      modules/nativescript/nativescript.cpp

+ 6 - 18
modules/nativescript/nativescript.cpp

@@ -212,6 +212,12 @@ ScriptInstance *NativeScript::instance_create(Object *p_this) {
 #ifndef NO_THREADS
 	owners_lock->unlock();
 #endif
+
+	// try to call _init
+	// we don't care if it doesn't exist, so we ignore errors.
+	Variant::CallError err;
+	call("_init", NULL, 0, err);
+
 	return nsi;
 }
 
@@ -412,24 +418,6 @@ Variant NativeScript::_new(const Variant **p_args, int p_argcount, Variant::Call
 		return Variant();
 	}
 
-	call("_init", p_args, p_argcount, r_error);
-
-	if (r_error.error != Variant::CallError::CALL_OK) {
-		instance->script = Ref<NativeScript>();
-		instance->owner->set_script_instance(NULL);
-
-#ifndef NO_THREADS
-		owners_lock->lock();
-#endif
-		instance_owners.erase(owner);
-
-#ifndef NO_THREADS
-		owners_lock->unlock();
-#endif
-
-		ERR_FAIL_COND_V(r_error.error != Variant::CallError::CALL_OK, Variant());
-	}
-
 	if (ref.is_valid()) {
 		return ref;
 	} else {