Fix crash when closing otclient in debug mode
This commit is contained in:
parent
b50eecc779
commit
31efe0a82d
|
@ -41,6 +41,13 @@ static bool isInZone(const Position& pos/* placePos*/,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CreatureManager::terminate()
|
||||||
|
{
|
||||||
|
clearSpawns();
|
||||||
|
clear();
|
||||||
|
m_nullCreature = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
void Spawn::load(TiXmlElement* node)
|
void Spawn::load(TiXmlElement* node)
|
||||||
{
|
{
|
||||||
Position centerPos = node->readPos("center");
|
Position centerPos = node->readPos("center");
|
||||||
|
@ -276,14 +283,14 @@ void CreatureManager::loadCreatureBuffer(const std::string& buffer)
|
||||||
if(attrib->ValueStr() != "look")
|
if(attrib->ValueStr() != "look")
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
m_loadCreatureBuffer(attrib, newType);
|
internalLoadCreatureBuffer(attrib, newType);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
doc.Clear();
|
doc.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CreatureManager::m_loadCreatureBuffer(TiXmlElement* attrib, const CreatureTypePtr& m)
|
void CreatureManager::internalLoadCreatureBuffer(TiXmlElement* attrib, const CreatureTypePtr& m)
|
||||||
{
|
{
|
||||||
if(std::find(m_creatures.begin(), m_creatures.end(), m) != m_creatures.end())
|
if(std::find(m_creatures.begin(), m_creatures.end(), m) != m_creatures.end())
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -99,6 +99,7 @@ public:
|
||||||
CreatureManager();
|
CreatureManager();
|
||||||
void clear() { m_creatures.clear(); }
|
void clear() { m_creatures.clear(); }
|
||||||
void clearSpawns();
|
void clearSpawns();
|
||||||
|
void terminate();
|
||||||
|
|
||||||
void loadMonsters(const std::string& file);
|
void loadMonsters(const std::string& file);
|
||||||
void loadSingleCreature(const std::string& file);
|
void loadSingleCreature(const std::string& file);
|
||||||
|
@ -119,7 +120,7 @@ public:
|
||||||
const std::vector<CreatureTypePtr>& getCreatures() { return m_creatures; }
|
const std::vector<CreatureTypePtr>& getCreatures() { return m_creatures; }
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void m_loadCreatureBuffer(TiXmlElement* elem, const CreatureTypePtr& m);
|
void internalLoadCreatureBuffer(TiXmlElement* elem, const CreatureTypePtr& m);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<CreatureTypePtr> m_creatures;
|
std::vector<CreatureTypePtr> m_creatures;
|
||||||
|
|
|
@ -79,7 +79,7 @@ void OTClient::init(const std::vector<std::string>& args)
|
||||||
|
|
||||||
void OTClient::terminate()
|
void OTClient::terminate()
|
||||||
{
|
{
|
||||||
g_creatures.clear();
|
g_creatures.terminate();
|
||||||
g_game.terminate();
|
g_game.terminate();
|
||||||
g_map.terminate();
|
g_map.terminate();
|
||||||
g_things.terminate();
|
g_things.terminate();
|
||||||
|
|
Loading…
Reference in New Issue