Add peace-of-mind checks to API hash caching

This commit is contained in:
Pedro J. Estébanez 2023-04-26 10:44:03 +02:00
parent e0e93ce094
commit a79e71ad58

View file

@ -56,6 +56,7 @@ ClassDB::APIType ClassDB::current_api = API_CORE;
HashMap<ClassDB::APIType, uint64_t> ClassDB::api_hashes_cache;
void ClassDB::set_current_api(APIType p_api) {
DEV_ASSERT(!api_hashes_cache.has(p_api)); // This API type may not be suitable for caching of hash if it can change later.
current_api = p_api;
}
@ -296,7 +297,12 @@ uint64_t ClassDB::get_api_hash(APIType p_api) {
}
hash = hash_fmix32(hash);
api_hashes_cache[p_api] = hash;
// Extension API changes at runtime; let's just not cache them by now.
if (p_api != API_EXTENSION && p_api != API_EDITOR_EXTENSION) {
api_hashes_cache[p_api] = hash;
}
return hash;
#else
return 0;