forked from mirrors/0ad
# Fixed string handling for Windows/Linux compatibility.
* vsnprintf2: Made compatible between GCC and MSVC - it now always null-terminates the buffer, and returns -1 on overflow. Fixes #158. Added tests. * MeshManager: Use shared_ptr.expired() instead of checking for bad_weak_ptr exception. * Xeromyces: Added tests for GetXMBPath, because it does unusual things in sscanf which MSVC's /analyze complains about. * ConfigDB, ScriptGlue: Replaced some asserts with return-on-failure, to avoid invalid array accesses when continuing after the assert (as complained about by /analyze). * CStr: Removed "using namespace std". Added tests for handling of invalid UTF-8. This was SVN commit r4625.
This commit is contained in:
@@ -16,19 +16,11 @@ CModelDefPtr CMeshManager::GetMesh(const char *filename)
|
||||
{
|
||||
CStr fn(filename);
|
||||
mesh_map::iterator iter = m_MeshMap.find(fn);
|
||||
if (iter != m_MeshMap.end())
|
||||
if (iter != m_MeshMap.end() && !iter->second.expired())
|
||||
{
|
||||
try
|
||||
{
|
||||
CModelDefPtr model (iter->second);
|
||||
//LOG(MESSAGE, "mesh", "Loading mesh '%s%' (cached)...", filename);
|
||||
return model;
|
||||
}
|
||||
// If the mesh has already been deleted, the weak_ptr -> shared_ptr
|
||||
// conversion will throw bad_weak_ptr (and we need to reload the mesh)
|
||||
catch (boost::bad_weak_ptr)
|
||||
{
|
||||
}
|
||||
CModelDefPtr model (iter->second);
|
||||
//LOG(MESSAGE, "mesh", "Loading mesh '%s%' (cached)...", filename);
|
||||
return model;
|
||||
}
|
||||
|
||||
try
|
||||
|
||||
Reference in New Issue
Block a user