diff options
| -rw-r--r-- | binaryninjaapi.h | 2 | ||||
| -rw-r--r-- | scriptingprovider.cpp | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h index e4504d1a..147a49fb 100644 --- a/binaryninjaapi.h +++ b/binaryninjaapi.h @@ -3743,6 +3743,7 @@ namespace BinaryNinja protected: ScriptingInstance(ScriptingProvider* provider); ScriptingInstance(BNScriptingInstance* instance); + virtual ~ScriptingInstance(); static void DestroyInstanceCallback(void* ctxt); static BNScriptingProviderExecuteResult ExecuteScriptInputCallback(void* ctxt, const char* input); @@ -3775,6 +3776,7 @@ namespace BinaryNinja { public: CoreScriptingInstance(BNScriptingInstance* instance); + virtual ~CoreScriptingInstance() {}; virtual BNScriptingProviderExecuteResult ExecuteScriptInput(const std::string& input) override; virtual void SetCurrentBinaryView(BinaryView* view) override; diff --git a/scriptingprovider.cpp b/scriptingprovider.cpp index 6a52e095..475d69ce 100644 --- a/scriptingprovider.cpp +++ b/scriptingprovider.cpp @@ -60,6 +60,7 @@ ScriptingInstance::ScriptingInstance(ScriptingProvider* provider) cb.setCurrentBasicBlock = SetCurrentBasicBlockCallback; cb.setCurrentAddress = SetCurrentAddressCallback; cb.setCurrentSelection = SetCurrentSelectionCallback; + AddRefForRegistration(); m_object = BNInitScriptingInstance(provider->GetObject(), &cb); } @@ -70,6 +71,12 @@ ScriptingInstance::ScriptingInstance(BNScriptingInstance* instance) } +ScriptingInstance::~ScriptingInstance() +{ + BNFreeScriptingInstance(m_object); +} + + void ScriptingInstance::DestroyInstanceCallback(void* ctxt) { ScriptingInstance* instance = (ScriptingInstance*)ctxt; |
