|
@@ -76,14 +76,17 @@ struct GDScriptDataType {
|
|
|
if (p_variant.get_type() != Variant::OBJECT) {
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
Object *obj = p_variant.operator Object *();
|
|
|
- if (obj) {
|
|
|
- if (!ClassDB::is_parent_class(obj->get_class_name(), native_type)) {
|
|
|
- // Try with underscore prefix
|
|
|
- StringName underscore_native_type = "_" + native_type;
|
|
|
- if (!ClassDB::is_parent_class(obj->get_class_name(), underscore_native_type)) {
|
|
|
- return false;
|
|
|
- }
|
|
|
+ if (!obj || !ObjectDB::instance_validate(obj)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!ClassDB::is_parent_class(obj->get_class_name(), native_type)) {
|
|
|
+ // Try with underscore prefix
|
|
|
+ StringName underscore_native_type = "_" + native_type;
|
|
|
+ if (!ClassDB::is_parent_class(obj->get_class_name(), underscore_native_type)) {
|
|
|
+ return false;
|
|
|
}
|
|
|
}
|
|
|
return true;
|
|
@@ -96,7 +99,12 @@ struct GDScriptDataType {
|
|
|
if (p_variant.get_type() != Variant::OBJECT) {
|
|
|
return false;
|
|
|
}
|
|
|
+
|
|
|
Object *obj = p_variant.operator Object *();
|
|
|
+ if (!obj || !ObjectDB::instance_validate(obj)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
Ref<Script> base = obj && obj->get_script_instance() ? obj->get_script_instance()->get_script() : NULL;
|
|
|
bool valid = false;
|
|
|
while (base.is_valid()) {
|