diff options
author | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2023-04-26 10:44:03 +0200 |
---|---|---|
committer | Pedro J. Estébanez <pedrojrulez@gmail.com> | 2023-04-26 10:44:52 +0200 |
commit | a79e71ad5870659f4b2ba18334ab058a92a2b1ad (patch) | |
tree | 714603c7df017797a3af28e937d1e1d43a2b5132 | |
parent | e0e93ce094d19d132f34aa5c92e892524a8125c9 (diff) | |
download | redot-engine-a79e71ad5870659f4b2ba18334ab058a92a2b1ad.tar.gz |
Add peace-of-mind checks to API hash caching
-rw-r--r-- | core/object/class_db.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/core/object/class_db.cpp b/core/object/class_db.cpp index d920ae6ca0..760f3bfd0c 100644 --- a/core/object/class_db.cpp +++ b/core/object/class_db.cpp @@ -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; |