From be81b0685f1e0d588faa9a8d70aca4b81006a718 Mon Sep 17 00:00:00 2001 From: David Snopek Date: Tue, 4 Feb 2025 16:37:36 -0600 Subject: [PATCH] Prevent instantiating classes that aren't exposed --- core/object/class_db.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index e6536fe8e98..1a932fbcc8c 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -548,6 +548,7 @@ Object *ClassDB::_instantiate_internal(const StringName &p_class, bool p_require } ERR_FAIL_NULL_V_MSG(ti, nullptr, vformat("Cannot get class '%s'.", String(p_class))); ERR_FAIL_COND_V_MSG(ti->disabled, nullptr, vformat("Class '%s' is disabled.", String(p_class))); + ERR_FAIL_COND_V_MSG(!ti->exposed, nullptr, vformat("Class '%s' isn't exposed.", String(p_class))); ERR_FAIL_NULL_V_MSG(ti->creation_func, nullptr, vformat("Class '%s' or its base class cannot be instantiated.", String(p_class))); } @@ -604,7 +605,7 @@ bool ClassDB::_can_instantiate(ClassInfo *p_class_info) { return false; } - if (p_class_info->disabled || !p_class_info->creation_func) { + if (p_class_info->disabled || !p_class_info->exposed || !p_class_info->creation_func) { return false; }