Merge pull request #108981 from DeeJayLSP/faster-uid-path-from-cache

Make getting a path from UID cache slightly faster
This commit is contained in:
Thaddeus Crews 2025-11-13 17:43:00 -06:00
commit 9a9e64a6ee
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC

View file

@ -328,19 +328,22 @@ Error ResourceUID::update_cache() {
} }
String ResourceUID::get_path_from_cache(Ref<FileAccess> &p_cache_file, const String &p_uid_string) { String ResourceUID::get_path_from_cache(Ref<FileAccess> &p_cache_file, const String &p_uid_string) {
const uint32_t entry_count = p_cache_file->get_32(); const int64_t uid_from_string = singleton->text_to_id(p_uid_string);
CharString cs; if (uid_from_string != INVALID_ID) {
for (uint32_t i = 0; i < entry_count; i++) { const uint32_t entry_count = p_cache_file->get_32();
int64_t id = p_cache_file->get_64(); CharString cs;
int32_t len = p_cache_file->get_32(); for (uint32_t i = 0; i < entry_count; i++) {
cs.resize_uninitialized(len + 1); int64_t id = p_cache_file->get_64();
ERR_FAIL_COND_V(cs.size() != len + 1, String()); int32_t len = p_cache_file->get_32();
cs[len] = 0; cs.resize_uninitialized(len + 1);
int32_t rl = p_cache_file->get_buffer((uint8_t *)cs.ptrw(), len); ERR_FAIL_COND_V(cs.size() != len + 1, String());
ERR_FAIL_COND_V(rl != len, String()); cs[len] = 0;
int32_t rl = p_cache_file->get_buffer((uint8_t *)cs.ptrw(), len);
ERR_FAIL_COND_V(rl != len, String());
if (singleton->id_to_text(id) == p_uid_string) { if (id == uid_from_string) {
return String::utf8(cs.get_data()); return String::utf8(cs.get_data());
}
} }
} }
return String(); return String();