From c21b3a36fcd4f5b4846235959e03359cbc427601 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 19 Sep 2015 17:50:30 -0700 Subject: [PATCH] Remove CPluginManager direct use of CPlugin::NativeOwner::m_fakes. --- core/logic/PluginSys.cpp | 11 ++++++++--- core/logic/PluginSys.h | 7 ++++++- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/logic/PluginSys.cpp b/core/logic/PluginSys.cpp index 7276a96ee..94a40f862 100644 --- a/core/logic/PluginSys.cpp +++ b/core/logic/PluginSys.cpp @@ -717,6 +717,12 @@ bool CPlugin::AddFakeNative(IPluginFunction *pFunc, const char *name, SPVM_FAKEN return true; } +void CPlugin::BindFakeNativesTo(CPlugin *other) +{ + for (size_t i = 0; i < m_fakes.length(); i++) + g_ShareSys.BindNativeToPlugin(other, m_fakes[i]); +} + /******************* * PLUGIN ITERATOR * *******************/ @@ -1274,7 +1280,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->GetStatus() <= Plugin_Paused && pPlugin->m_fakes.length()) + if (pPlugin->GetStatus() <= Plugin_Paused && pPlugin->HasFakeNatives()) { List::iterator pl_iter; for (pl_iter = m_plugins.begin(); @@ -1293,8 +1299,7 @@ bool CPluginManager::RunSecondPass(CPlugin *pPlugin, char *error, size_t maxleng && pOther != pPlugin) { g_ShareSys.BeginBindingFor(pPlugin); - for (size_t i = 0; i < pPlugin->m_fakes.length(); i++) - g_ShareSys.BindNativeToPlugin(pOther, pPlugin->m_fakes[i]); + pPlugin->BindFakeNativesTo(pOther); } } } diff --git a/core/logic/PluginSys.h b/core/logic/PluginSys.h index 0284f53d2..483a2e1b8 100644 --- a/core/logic/PluginSys.h +++ b/core/logic/PluginSys.h @@ -279,11 +279,16 @@ public: bool HasMissingLibrary() const { return m_LibraryMissing; } + bool HasFakeNatives() const { + return m_fakes.length() > 0; + } + + bool TryCompile(); + void BindFakeNativesTo(CPlugin *other); protected: bool ReadInfo(); void DependencyDropped(CPlugin *pOwner); - bool TryCompile(); private: time_t GetFileTimeStamp();