Rename CPlugin::SetErrorState to EvictWithError.

This commit is contained in:
David Anderson 2015-09-19 20:01:31 -07:00
parent c4c6efb140
commit 82ff7d5af7
4 changed files with 19 additions and 21 deletions

View File

@ -59,7 +59,7 @@ public:
virtual AutoConfig *GetConfig(size_t i) = 0; virtual AutoConfig *GetConfig(size_t i) = 0;
virtual void AddLibrary(const char *name) = 0; virtual void AddLibrary(const char *name) = 0;
virtual void AddConfig(bool create, const char *cfg, const char *folder) = 0; virtual void AddConfig(bool create, const char *cfg, const char *folder) = 0;
virtual void SetErrorState(PluginStatus status, const char *fmt, ...) = 0; virtual void EvictWithError(PluginStatus status, const char *fmt, ...) = 0;
}; };
class IScriptManager class IScriptManager

View File

@ -143,7 +143,7 @@ CPlugin *CPlugin::Create(const char *file)
CPlugin *pPlugin = new CPlugin(file); CPlugin *pPlugin = new CPlugin(file);
if (!fp) { if (!fp) {
pPlugin->SetErrorState(Plugin_BadLoad, "Unable to open file"); pPlugin->EvictWithError(Plugin_BadLoad, "Unable to open file");
return pPlugin; return pPlugin;
} }
@ -178,7 +178,7 @@ IPluginRuntime *CPlugin::GetRuntime()
return m_pRuntime; return m_pRuntime;
} }
void CPlugin::SetErrorState(PluginStatus status, const char *error_fmt, ...) void CPlugin::EvictWithError(PluginStatus status, const char *error_fmt, ...)
{ {
if (m_status == Plugin_Running) if (m_status == Plugin_Running)
{ {
@ -265,7 +265,7 @@ bool CPlugin::ReadInfo()
} }
if (m_FileVersion > 5) { if (m_FileVersion > 5) {
base->LocalToString(info->filevers, (char **)&pFileVers); base->LocalToString(info->filevers, (char **)&pFileVers);
SetErrorState(Plugin_Failed, "Newer SourceMod required (%s or higher)", pFileVers); EvictWithError(Plugin_Failed, "Newer SourceMod required (%s or higher)", pFileVers);
return false; return false;
} }
} else { } else {
@ -311,7 +311,7 @@ void CPlugin::Call_OnPluginStart()
int err; int err;
if ((err=pFunction->Execute(&result)) != SP_ERROR_NONE) if ((err=pFunction->Execute(&result)) != SP_ERROR_NONE)
{ {
SetErrorState(Plugin_Error, "Error detected in plugin startup (see error logs)"); EvictWithError(Plugin_Error, "Error detected in plugin startup (see error logs)");
} }
} }
@ -388,7 +388,7 @@ APLRes CPlugin::AskPluginLoad()
pFunction->PushStringEx(m_errormsg, sizeof(m_errormsg), 0, SM_PARAM_COPYBACK); pFunction->PushStringEx(m_errormsg, sizeof(m_errormsg), 0, SM_PARAM_COPYBACK);
pFunction->PushCell(sizeof(m_errormsg)); pFunction->PushCell(sizeof(m_errormsg));
if ((err = pFunction->Execute(&result)) != SP_ERROR_NONE) { if ((err = pFunction->Execute(&result)) != SP_ERROR_NONE) {
SetErrorState(Plugin_Failed, "unexpected error %d in AskPluginLoad callback", err); EvictWithError(Plugin_Failed, "unexpected error %d in AskPluginLoad callback", err);
return APLRes_Failure; return APLRes_Failure;
} }
@ -435,7 +435,7 @@ bool CPlugin::TryCompile()
char loadmsg[255]; char loadmsg[255];
m_pRuntime = g_pSourcePawn2->LoadBinaryFromFile(fullpath, loadmsg, sizeof(loadmsg)); m_pRuntime = g_pSourcePawn2->LoadBinaryFromFile(fullpath, loadmsg, sizeof(loadmsg));
if (!m_pRuntime) { if (!m_pRuntime) {
SetErrorState(Plugin_BadLoad, "Unable to load plugin (%s)", loadmsg); EvictWithError(Plugin_BadLoad, "Unable to load plugin (%s)", loadmsg);
return false; return false;
} }
@ -634,7 +634,7 @@ void CPlugin::DependencyDropped(CPlugin *pOwner)
/* :IDEA: in the future, add native trapping? */ /* :IDEA: in the future, add native trapping? */
if (m_FakeNativesMissing || m_LibraryMissing) if (m_FakeNativesMissing || m_LibraryMissing)
{ {
SetErrorState(Plugin_Error, "Depends on plugin: %s", pOwner->GetFilename()); EvictWithError(Plugin_Error, "Depends on plugin: %s", pOwner->GetFilename());
} }
} }
@ -990,7 +990,7 @@ void CPluginManager::LoadAll_SecondPass()
if (!RunSecondPass(pPlugin, error, sizeof(error))) if (!RunSecondPass(pPlugin, error, sizeof(error)))
{ {
g_Logger.LogError("[SM] Unable to load plugin \"%s\": %s", pPlugin->GetFilename(), error); g_Logger.LogError("[SM] Unable to load plugin \"%s\": %s", pPlugin->GetFilename(), error);
pPlugin->SetErrorState(Plugin_BadLoad, "%s", error); pPlugin->EvictWithError(Plugin_BadLoad, "%s", error);
} }
} }
} }
@ -1208,9 +1208,9 @@ bool CPluginManager::MalwareCheckPass(CPlugin *pPlugin)
if (m_bBlockBadPlugins) { if (m_bBlockBadPlugins) {
if (bulletinUrl[0] != '\0') { if (bulletinUrl[0] != '\0') {
pPlugin->SetErrorState(Plugin_BadLoad, "Known malware detected and blocked. See %s for more info", bulletinUrl); pPlugin->EvictWithError(Plugin_BadLoad, "Known malware detected and blocked. See %s for more info", bulletinUrl);
} else { } else {
pPlugin->SetErrorState(Plugin_BadLoad, "Possible malware or illegal plugin detected and blocked"); pPlugin->EvictWithError(Plugin_BadLoad, "Possible malware or illegal plugin detected and blocked");
} }
return false; return false;
} }
@ -1322,7 +1322,7 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
} }
} }
if (!found) { if (!found) {
pPlugin->SetErrorState(Plugin_Error, "Library not found: %s", lib); pPlugin->EvictWithError(Plugin_Error, "Library not found: %s", lib);
return false; return false;
} }
found->AddDependent(pPlugin); found->AddDependent(pPlugin);
@ -1345,7 +1345,7 @@ void CPluginManager::TryRefreshDependencies(CPlugin *pPlugin)
native->name[0] != '@' && native->name[0] != '@' &&
!(native->flags & SP_NTVFLAG_OPTIONAL)) !(native->flags & SP_NTVFLAG_OPTIONAL))
{ {
pPlugin->SetErrorState(Plugin_Error, "Native not found: %s", native->name); pPlugin->EvictWithError(Plugin_Error, "Native not found: %s", native->name);
return; return;
} }
} }

View File

@ -131,10 +131,8 @@ public:
} }
public: public:
/** // Evicts the plugin from memory and sets an error state.
* Sets an error state on the plugin void EvictWithError(PluginStatus status, const char *error_fmt, ...);
*/
void SetErrorState(PluginStatus status, const char *error_fmt, ...);
/** /**
* Initializes the plugin's identity information * Initializes the plugin's identity information

View File

@ -390,7 +390,7 @@ static cell_t SetFailState(IPluginContext *pContext, const cell_t *params)
if (params[0] == 1) if (params[0] == 1)
{ {
pPlugin->SetErrorState(Plugin_Failed, "%s", str); pPlugin->EvictWithError(Plugin_Failed, "%s", str);
return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", str); return pContext->ThrowNativeErrorEx(SP_ERROR_ABORTED, "%s", str);
} }
@ -402,10 +402,10 @@ static cell_t SetFailState(IPluginContext *pContext, const cell_t *params)
DetectExceptions eh(pContext); DetectExceptions eh(pContext);
g_pSM->FormatString(buffer, sizeof(buffer), pContext, params, 1); g_pSM->FormatString(buffer, sizeof(buffer), pContext, params, 1);
if (eh.HasException()) { if (eh.HasException()) {
pPlugin->SetErrorState(Plugin_Failed, "%s", str); pPlugin->EvictWithError(Plugin_Failed, "%s", str);
return 0; return 0;
} }
pPlugin->SetErrorState(Plugin_Failed, "%s", buffer); pPlugin->EvictWithError(Plugin_Failed, "%s", buffer);
pContext->ReportFatalError("%s", buffer); pContext->ReportFatalError("%s", buffer);
return 0; return 0;
} }
@ -674,7 +674,7 @@ static cell_t RequireFeature(IPluginContext *pContext, const cell_t *params)
g_pSM->Format(default_message, sizeof(default_message), "Feature \"%s\" not available", name); g_pSM->Format(default_message, sizeof(default_message), "Feature \"%s\" not available", name);
msg = default_message; msg = default_message;
} }
pPlugin->SetErrorState(Plugin_Error, "%s", msg); pPlugin->EvictWithError(Plugin_Error, "%s", msg);
if (!eh.HasException()) if (!eh.HasException())
pContext->ReportFatalError("%s", msg); pContext->ReportFatalError("%s", msg);