summaryrefslogtreecommitdiff
path: root/scriptingprovider.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty.wagner@gmail.com>2023-01-31 21:45:23 -0500
committerAlexander Taylor <alex@vector35.com>2023-02-08 11:53:38 -0500
commitc2247a35e97c96eba9cd4caf09b32b038625cc31 (patch)
treed88022f286bd811667f88cc3926dada7b4ec5d31 /scriptingprovider.cpp
parent0b752f36c9d3b6bcb51a05fdcf5b38633d38bdbd (diff)
Clean up possible early deletion issues in API callbacks
Diffstat (limited to 'scriptingprovider.cpp')
-rw-r--r--scriptingprovider.cpp18
1 files changed, 9 insertions, 9 deletions
diff --git a/scriptingprovider.cpp b/scriptingprovider.cpp
index e1b7445e..def9c4c0 100644
--- a/scriptingprovider.cpp
+++ b/scriptingprovider.cpp
@@ -79,21 +79,21 @@ void ScriptingInstance::DestroyInstanceCallback(void* ctxt)
BNScriptingProviderExecuteResult ScriptingInstance::ExecuteScriptInputCallback(void* ctxt, const char* input)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
return instance->ExecuteScriptInput(input);
}
void ScriptingInstance::CancelScriptInputCallback(void* ctxt)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
instance->CancelScriptInput();
}
void ScriptingInstance::SetCurrentBinaryViewCallback(void* ctxt, BNBinaryView* view)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
Ref<BinaryView> object = view ? new BinaryView(BNNewViewReference(view)) : nullptr;
instance->SetCurrentBinaryView(object);
}
@@ -101,7 +101,7 @@ void ScriptingInstance::SetCurrentBinaryViewCallback(void* ctxt, BNBinaryView* v
void ScriptingInstance::SetCurrentFunctionCallback(void* ctxt, BNFunction* func)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
Ref<Function> object = func ? new Function(BNNewFunctionReference(func)) : nullptr;
instance->SetCurrentFunction(object);
}
@@ -109,7 +109,7 @@ void ScriptingInstance::SetCurrentFunctionCallback(void* ctxt, BNFunction* func)
void ScriptingInstance::SetCurrentBasicBlockCallback(void* ctxt, BNBasicBlock* block)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
Ref<BasicBlock> object = block ? new BasicBlock(BNNewBasicBlockReference(block)) : nullptr;
instance->SetCurrentBasicBlock(object);
}
@@ -117,21 +117,21 @@ void ScriptingInstance::SetCurrentBasicBlockCallback(void* ctxt, BNBasicBlock* b
void ScriptingInstance::SetCurrentAddressCallback(void* ctxt, uint64_t addr)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
instance->SetCurrentAddress(addr);
}
void ScriptingInstance::SetCurrentSelectionCallback(void* ctxt, uint64_t begin, uint64_t end)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
instance->SetCurrentSelection(begin, end);
}
char* ScriptingInstance::CompleteInputCallback(void* ctxt, const char* text, uint64_t state)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
std::string completed = instance->CompleteInput(text, state);
if (completed.c_str() == nullptr)
{
@@ -144,7 +144,7 @@ char* ScriptingInstance::CompleteInputCallback(void* ctxt, const char* text, uin
void ScriptingInstance::StopCallback(void* ctxt)
{
- ScriptingInstance* instance = (ScriptingInstance*)ctxt;
+ CallbackRef<ScriptingInstance> instance(ctxt);
instance->Stop();
}