Core: Fix crash in ~ScriptMgr

Fixes: #854
Fixes: #918
Fixes: #917
This commit is contained in:
Machiavelli
2011-03-14 09:44:02 +01:00
parent 1eed7c53a9
commit 31a2c9b82b
3 changed files with 24 additions and 16 deletions
+19 -15
View File
@@ -140,6 +140,25 @@ ScriptMgr::ScriptMgr()
}
ScriptMgr::~ScriptMgr()
{
}
void ScriptMgr::Initialize()
{
uint32 oldMSTime = getMSTime();
LoadDatabase();
sLog->outString("Loading C++ scripts");
FillSpellSummary();
AddScripts();
sLog->outString(">> Loaded %u C++ scripts in %u ms", GetScriptCount(), GetMSTimeDiffToNow(oldMSTime));
sLog->outString();
}
void ScriptMgr::Unload()
{
#define SCR_CLEAR(T) \
FOR_SCRIPTS(T, itr, end) \
@@ -175,21 +194,6 @@ ScriptMgr::~ScriptMgr()
#undef SCR_CLEAR
}
void ScriptMgr::Initialize()
{
uint32 oldMSTime = getMSTime();
LoadDatabase();
sLog->outString("Loading C++ scripts");
FillSpellSummary();
AddScripts();
sLog->outString(">> Loaded %u C++ scripts in %u ms", GetScriptCount(), GetMSTimeDiffToNow(oldMSTime));
sLog->outString();
}
void ScriptMgr::LoadDatabase()
{
sScriptSystemMgr->LoadVersion();
+4 -1
View File
@@ -760,7 +760,7 @@ class ScriptMgr
friend class ScriptObject;
ScriptMgr();
~ScriptMgr();
virtual ~ScriptMgr();
uint32 _scriptCount;
@@ -775,6 +775,9 @@ class ScriptMgr
void IncrementScriptCount() { ++_scriptCount; }
uint32 GetScriptCount() const { return _scriptCount; }
public: /* Unloading */
void Unload();
public: /* SpellScriptLoader */
void CreateSpellScripts(uint32 spell_id, std::list<SpellScript*>& script_vector);
@@ -92,4 +92,5 @@ void WorldRunnable::run()
sMapMgr->UnloadAll(); // unload all grids (including locked in memory)
sObjectAccessor->UnloadAll(); // unload 'i_player2corpse' storage and remove from world
sScriptMgr->Unload();
}