diff --git a/core/systems/PluginSys.cpp b/core/systems/PluginSys.cpp index 122af7a1..2940eca3 100644 --- a/core/systems/PluginSys.cpp +++ b/core/systems/PluginSys.cpp @@ -295,7 +295,11 @@ void CPlugin::Call_OnPluginStart() return; } - pFunction->Execute(&result); + int err; + if ((err=pFunction->Execute(&result)) != SP_ERROR_NONE) + { + SetErrorState(Plugin_Error, "Error detected in plugin startup (see error logs)"); + } } void CPlugin::Call_OnPluginEnd() @@ -1061,7 +1065,7 @@ bool CPluginManager::RunSecondPass(CPlugin *pPlugin, char *error, size_t maxleng pPlugin->Call_OnPluginStart(); /* Now, if we have fake natives, go through all plugins that might need rebinding */ - if (pPlugin->m_fakeNatives.size()) + if (pPlugin->GetStatus() >= Plugin_Paused && pPlugin->m_fakeNatives.size()) { List::iterator pl_iter; CPlugin *pOther; diff --git a/plugins/include/sourcemod.inc b/plugins/include/sourcemod.inc index bed7208d..a7d02880 100644 --- a/plugins/include/sourcemod.inc +++ b/plugins/include/sourcemod.inc @@ -218,7 +218,7 @@ native bool:GetPluginInfo(Handle:plugin, PluginInfo:info, String:buffer[], maxle * * @param string Message to print. * @noreturn - * @error Always. + * @error Always throws SP_ERROR_ABORT. */ native SetFailState(const String:string[]);