Fix crash when adding a NULL object to the cache

new-script-api
scrawl 7 years ago
parent 4c174ecd12
commit 50d7eb8e54

@ -141,10 +141,7 @@ osg::ref_ptr<const BulletShape> BulletShapeManager::getShape(const std::string &
node->accept(visitor);
shape = visitor.getShape();
if (!shape)
{
mCache->addEntryToObjectCache(normalized, NULL);
return osg::ref_ptr<BulletShape>();
}
}
mCache->addEntryToObjectCache(normalized, shape);
@ -158,7 +155,8 @@ osg::ref_ptr<BulletShapeInstance> BulletShapeManager::cacheInstance(const std::s
mVFS->normalizeFilename(normalized);
osg::ref_ptr<BulletShapeInstance> instance = createInstance(normalized);
mInstanceCache->addEntryToObjectCache(normalized, instance.get());
if (instance)
mInstanceCache->addEntryToObjectCache(normalized, instance.get());
return instance;
}

@ -51,6 +51,11 @@ namespace Resource
void MultiObjectCache::addEntryToObjectCache(const std::string &filename, osg::Object *object)
{
if (!object)
{
OSG_ALWAYS << " trying to add NULL object to cache for " << filename << std::endl;
return;
}
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_objectCacheMutex);
_objectCache.insert(std::make_pair(filename, object));
}

@ -34,6 +34,11 @@ ObjectCache::~ObjectCache()
void ObjectCache::addEntryToObjectCache(const std::string& filename, osg::Object* object, double timestamp)
{
if (!object)
{
OSG_ALWAYS << " trying to add NULL object to cache for " << filename << std::endl;
return;
}
OpenThreads::ScopedLock<OpenThreads::Mutex> lock(_objectCacheMutex);
_objectCache[filename]=ObjectTimeStampPair(object,timestamp);
}

Loading…
Cancel
Save