summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--binding_generator.py2
-rw-r--r--include/core/Godot.hpp5
2 files changed, 5 insertions, 2 deletions
diff --git a/binding_generator.py b/binding_generator.py
index 16db7eb..9bb8dd5 100644
--- a/binding_generator.py
+++ b/binding_generator.py
@@ -155,7 +155,7 @@ def generate_class_header(used_classes, c):
# ___get_class_name
source.append("\tstatic inline const char *___get_class_name() { return (const char *) \"" + strip_name(c["name"]) + "\"; }")
- source.append("\tstatic inline Object *___get_from_variant(Variant a) { godot_object *o = (godot_object*) a; return (Object *) godot::nativescript_1_1_api->godot_nativescript_get_instance_binding_data(godot::_RegisterState::language_index, o); }")
+ source.append("\tstatic inline Object *___get_from_variant(Variant a) { godot_object *o = (godot_object*) a; return (o) ? (Object *) godot::nativescript_1_1_api->godot_nativescript_get_instance_binding_data(godot::_RegisterState::language_index, o) : nullptr; }")
enum_values = []
diff --git a/include/core/Godot.hpp b/include/core/Godot.hpp
index a09310e..414a48a 100644
--- a/include/core/Godot.hpp
+++ b/include/core/Godot.hpp
@@ -24,7 +24,7 @@ namespace godot {
template <class T>
T *as(const Object *obj) {
- return (T *)godot::nativescript_api->godot_nativescript_get_userdata(obj->_owner);
+ return (obj) ? (T *)godot::nativescript_api->godot_nativescript_get_userdata(obj->_owner) : nullptr;
}
template <class T>
@@ -428,6 +428,9 @@ void register_signal(String name, Args... varargs) {
#ifndef GODOT_CPP_NO_OBJECT_CAST
template <class T>
T *Object::cast_to(const Object *obj) {
+ if (!obj)
+ return nullptr;
+
size_t have_tag = (size_t)godot::nativescript_1_1_api->godot_nativescript_get_type_tag(obj->_owner);
if (have_tag) {