Fix NULL dereferencing in get_from_variant and cast_to
parent
5225ab2bac
commit
be5a012ff7
|
@ -155,7 +155,7 @@ def generate_class_header(used_classes, c):
|
||||||
# ___get_class_name
|
# ___get_class_name
|
||||||
source.append("\tstatic inline const char *___get_class_name() { return (const char *) \"" + strip_name(c["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 = []
|
enum_values = []
|
||||||
|
|
||||||
|
|
|
@ -24,7 +24,7 @@ namespace godot {
|
||||||
|
|
||||||
template <class T>
|
template <class T>
|
||||||
T *as(const Object *obj) {
|
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>
|
template <class T>
|
||||||
|
@ -428,6 +428,9 @@ void register_signal(String name, Args... varargs) {
|
||||||
#ifndef GODOT_CPP_NO_OBJECT_CAST
|
#ifndef GODOT_CPP_NO_OBJECT_CAST
|
||||||
template <class T>
|
template <class T>
|
||||||
T *Object::cast_to(const Object *obj) {
|
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);
|
size_t have_tag = (size_t)godot::nativescript_1_1_api->godot_nativescript_get_type_tag(obj->_owner);
|
||||||
|
|
||||||
if (have_tag) {
|
if (have_tag) {
|
||||||
|
|
Loading…
Reference in New Issue