1
0
forked from 0ad/0ad

Memory leak fix

This was SVN commit r568.
This commit is contained in:
Ykkrosh 2004-06-19 21:27:23 +00:00
parent c01eb01dfb
commit eed80d019a
3 changed files with 19 additions and 0 deletions

View File

@ -30,6 +30,16 @@ CModelDef::~CModelDef()
delete[] m_PropPoints;
}
///////////////////////////////////////////////////////////////////////////////
// Call at shutdown to free memory
void CModelDef::Shutdown()
{
for (std::vector<CModelDef*>::iterator iter = m_LoadedModelDefs.begin(); iter != m_LoadedModelDefs.end(); ++iter)
delete *iter;
}
// The list of allocated models which are to be freed
std::vector<CModelDef*> CModelDef::m_LoadedModelDefs;
///////////////////////////////////////////////////////////////////////////////
// FindPropPoint: find and return pointer to prop point matching given name;
@ -97,6 +107,7 @@ CModelDef* CModelDef::Load(const char* filename)
delete mdef;
throw CFileUnpacker::CFileEOFError();
}
m_LoadedModelDefs.push_back(mdef);
return mdef;
}

View File

@ -84,6 +84,9 @@ public:
// destructor
virtual ~CModelDef();
// shutdown memory-freer
static void Shutdown();
// model I/O functions
static CModelDef* Load(const char* filename);
static void Save(const char* filename,const CModelDef* mdef);
@ -118,6 +121,9 @@ public:
// prop point data
u32 m_NumPropPoints;
SPropPoint* m_PropPoints;
// all loaded models, to be freed on shutdown
static std::vector<CModelDef*> m_LoadedModelDefs;
};
#endif

View File

@ -17,6 +17,8 @@ CObjectManager::~CObjectManager()
delete m_ObjectTypes[i].m_Objects[j];
}
}
CModelDef::Shutdown();
}
CObjectEntry* CObjectManager::FindObject(const char* objectname)