Fix issue with zero size cache.

PiperOrigin-RevId: 819773517
Change-Id: Iff1523e17ffbd1dff02bee71db896c64bd8b565c
This commit is contained in:
Kyle Bayes
2025-10-15 08:44:48 -07:00
committed by Copybara-Service
parent 5715cebbb9
commit 8cbfc42767
3 changed files with 40 additions and 6 deletions
+3 -5
View File
@@ -1783,14 +1783,12 @@ void mj_clearCache(mjCache* cache) {
// get the internal asset cache used by the compiler
mjCache* mj_getCache() {
static mjCache cache_cwrapper = {0};
// mjCCache is not trivially destructible and so the global cache needs to
// allocated on the heap
if constexpr (kGlobalCacheSize != 0) {
static mjCCache* cache = new(std::nothrow) mjCCache(kGlobalCacheSize);
static mjCache cache_cwrapper;
cache_cwrapper.impl_ = cache;
return cache->Capacity() > 0 ? &cache_cwrapper : nullptr;
} else {
return nullptr;
cache_cwrapper.impl_ = cache->Capacity() > 0 ? cache : nullptr;
}
return &cache_cwrapper;
}
+1 -1
View File
@@ -116,10 +116,10 @@ bool mjCCache::PopulateData(const std::string& id, const mjResource* resource, m
}
mjCAsset* asset = &(it->second);
asset->IncrementAccess();
// update priority queue
entries_.erase(asset);
asset->IncrementAccess();
entries_.insert(asset);
return asset->PopulateData(fn);