1
0
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:
Ykkrosh
2006-11-07 21:03:13 +00:00
parent 75f2f9fd5f
commit a265a441fd
18 changed files with 254 additions and 64 deletions
+4 -12
View File
@@ -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