diff options
Diffstat (limited to 'core')
-rw-r--r-- | core/extension/gdextension.cpp | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/core/extension/gdextension.cpp b/core/extension/gdextension.cpp index 26512d0c56..136a5bfbb2 100644 --- a/core/extension/gdextension.cpp +++ b/core/extension/gdextension.cpp @@ -959,13 +959,15 @@ Ref<Resource> GDExtensionResourceLoader::load(const String &p_path, const String // object if one has already been loaded (even if caching is disabled at the resource // loader level). GDExtensionManager *manager = GDExtensionManager::get_singleton(); - Ref<GDExtension> lib = manager->get_extension(p_path); - if (lib.is_null()) { - Error err = load_gdextension_resource(p_path, lib); - if (err != OK && r_error) { - // Errors already logged in load_gdextension_resource(). - *r_error = err; - } + if (manager->is_extension_loaded(p_path)) { + return manager->get_extension(p_path); + } + + Ref<GDExtension> lib; + Error err = load_gdextension_resource(p_path, lib); + if (err != OK && r_error) { + // Errors already logged in load_gdextension_resource(). + *r_error = err; } return lib; } |