diff options
author | RĂ©mi Verschelde <remi@verschelde.fr> | 2021-05-05 16:14:53 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-05-05 16:14:53 +0200 |
commit | 1b33880bc07aaecf70a3d4856db900de92073a58 (patch) | |
tree | 8e5030c008d4ab975e82829561703882f8bf21b1 /core | |
parent | e144ff0445b9e59a4733b253cdd352d52ee301bc (diff) | |
parent | 02e96d9748c3f37882dc74f7a0a6020d07aba9f3 (diff) |
Merge pull request #48474 from akien-mga/improve-custom-resource-loader-error
Fix error handling for user-defined `ResourceFormatLoader.load`
Diffstat (limited to 'core')
-rw-r--r-- | core/io/resource_loader.cpp | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index dcf71bb4a9..040e55b9db 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -114,25 +114,24 @@ void ResourceFormatLoader::get_recognized_extensions(List<String> *p_extensions) } RES ResourceFormatLoader::load(const String &p_path, const String &p_original_path, Error *r_error, bool p_use_sub_threads, float *r_progress, CacheMode p_cache_mode) { + // Check user-defined loader if there's any. Hard fail if it returns an error. if (get_script_instance() && get_script_instance()->has_method("load")) { Variant res = get_script_instance()->call("load", p_path, p_original_path, p_use_sub_threads, p_cache_mode); - if (res.get_type() == Variant::INT) { + if (res.get_type() == Variant::INT) { // Error code, abort. if (r_error) { *r_error = (Error)res.operator int64_t(); } - - } else { + return RES(); + } else { // Success, pass on result. if (r_error) { *r_error = OK; } return res; } - - return res; } - ERR_FAIL_V_MSG(RES(), "Failed to load resource '" + p_path + "', ResourceFormatLoader::load was not implemented for this resource type."); + ERR_FAIL_V_MSG(RES(), "Failed to load resource '" + p_path + "'. ResourceFormatLoader::load was not implemented for this resource type."); } void ResourceFormatLoader::get_dependencies(const String &p_path, List<String> *p_dependencies, bool p_add_types) { |