From e5076659dd61cb060481c635eabdcd3e68cb9533 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Thu, 22 Dec 2005 13:04:08 +0000 Subject: [PATCH] Fixed crash bug in plugin retry/reloading --HG-- extra : convert_revision : svn%3Ac2935e3e-5518-0410-8daf-afa5dab7d4e3/trunk%40161 --- sourcemm/CPlugin.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/sourcemm/CPlugin.cpp b/sourcemm/CPlugin.cpp index 254444b..ca29f23 100644 --- a/sourcemm/CPlugin.cpp +++ b/sourcemm/CPlugin.cpp @@ -62,7 +62,9 @@ PluginId CPluginManager::Load(const char *file, PluginId source, bool &already, already = false; //Check if we're about to reload an old plugin - for (i=m_Plugins.begin(); i!=m_Plugins.end(); i++) + PluginIter iter = m_Plugins.begin(); + PluginIter end = m_Plugins.end(); + while (iter != end) { if ( (*i) && (*i)->m_File.compare(file)==0 ) { @@ -71,12 +73,14 @@ PluginId CPluginManager::Load(const char *file, PluginId source, bool &already, //Attempt to load the plugin again already = true; i = m_Plugins.erase(i); + continue; } else { //No need to load it already = true; return (*i)->m_Id; } } + iter++; } CPlugin *pl = _Load(file, source, error, maxlen);