diff --git a/core/systems/ForwardSys.cpp b/core/systems/ForwardSys.cpp index 376beaf3..9f0f25ce 100644 --- a/core/systems/ForwardSys.cpp +++ b/core/systems/ForwardSys.cpp @@ -278,11 +278,6 @@ int CForward::Execute(cell_t *result, IForwardFilter *filter) { func = (*iter); - if (!func->IsRunnable()) - { - continue; - } - for (unsigned int i=0; i *lst; + + if (func->IsRunnable()) + { + lst = &m_functions; + } else { + lst = &m_paused; + } for (iter=m_functions.begin(); iter!=m_functions.end(); iter++) { if ((*iter) == func) { found = true; - m_functions.erase(iter); + lst->erase(iter); break; } } @@ -660,7 +663,12 @@ bool CForward::AddFunction(IPluginFunction *func) return false; } - m_functions.push_back(func); + if (func->IsRunnable()) + { + m_functions.push_back(func); + } else { + m_paused.push_back(func); + } return true; } diff --git a/core/systems/ForwardSys.h b/core/systems/ForwardSys.h index 27c5868b..0582e3f9 100644 --- a/core/systems/ForwardSys.h +++ b/core/systems/ForwardSys.h @@ -83,6 +83,7 @@ protected: * Destroying these things and using new/delete for their members feels bad. */ mutable List m_functions; + mutable List m_paused; /* Type and name information */ FwdParamInfo m_params[SP_MAX_EXEC_PARAMS];