summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorKarroffel <therzog@mail.de>2017-07-27 15:30:39 +0200
committerKarroffel <therzog@mail.de>2017-07-27 15:30:39 +0200
commit3185c9c3744652d0d9552c59c8907d66c40e14c9 (patch)
treeb4b7c568139ee54e8681392dadffd3347efbb27a /modules
parentaae8accadd48c397ee9a714e6b114321c6208ab3 (diff)
[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.
Diffstat (limited to 'modules')
-rw-r--r--modules/nativescript/nativescript.cpp24
1 files changed, 6 insertions, 18 deletions
diff --git a/modules/nativescript/nativescript.cpp b/modules/nativescript/nativescript.cpp
index 0a070988ac..c4cbfcce51 100644
--- a/modules/nativescript/nativescript.cpp
+++ b/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 {