diff --git a/core/variant/binder_common.h b/core/variant/binder_common.h index 34b54f1d0072..3247131c3f8e 100644 --- a/core/variant/binder_common.h +++ b/core/variant/binder_common.h @@ -224,6 +224,14 @@ struct PtrToArg { template struct VariantObjectClassChecker { static _FORCE_INLINE_ bool check(const Variant &p_variant) { +#ifdef DEBUG_ENABLED + bool freed; + p_variant.get_validated_object_with_check(freed); + if (freed) { + return false; + } +#endif + using TStripped = std::remove_pointer_t; if constexpr (std::is_base_of::value) { Object *obj = p_variant; @@ -257,6 +265,7 @@ struct VariantCasterAndValidate { r_error.error = Callable::CallError::CALL_ERROR_INVALID_ARGUMENT; r_error.argument = p_arg_idx; r_error.expected = argtype; + return VariantCaster::cast(Variant()); } return VariantCaster::cast(*p_args[p_arg_idx]);