summaryrefslogtreecommitdiff
path: root/scriptingprovider.cpp
diff options
context:
space:
mode:
authorXusheng <xusheng@vector35.com>2022-09-07 18:07:19 +0800
committerXusheng <xusheng@vector35.com>2022-09-08 12:50:17 +0800
commit5e9ed278cd437743d32f42094a8fb94228e8e17e (patch)
tree04a17356c183f86453b451d1456da220df4c0811 /scriptingprovider.cpp
parent4f2874173637835f4da74e919658d8edc90448fe (diff)
Fix memory leak issue related to ScriptingInstance. Close https://github.com/Vector35/binaryninja-api/issues/3461.
Diffstat (limited to 'scriptingprovider.cpp')
-rw-r--r--scriptingprovider.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/scriptingprovider.cpp b/scriptingprovider.cpp
index 0a89c5a2..e1b7445e 100644
--- a/scriptingprovider.cpp
+++ b/scriptingprovider.cpp
@@ -94,21 +94,24 @@ void ScriptingInstance::CancelScriptInputCallback(void* ctxt)
void ScriptingInstance::SetCurrentBinaryViewCallback(void* ctxt, BNBinaryView* view)
{
ScriptingInstance* instance = (ScriptingInstance*)ctxt;
- instance->SetCurrentBinaryView(view ? new BinaryView(BNNewViewReference(view)) : nullptr);
+ Ref<BinaryView> object = view ? new BinaryView(BNNewViewReference(view)) : nullptr;
+ instance->SetCurrentBinaryView(object);
}
void ScriptingInstance::SetCurrentFunctionCallback(void* ctxt, BNFunction* func)
{
ScriptingInstance* instance = (ScriptingInstance*)ctxt;
- instance->SetCurrentFunction(func ? new Function(BNNewFunctionReference(func)) : nullptr);
+ Ref<Function> object = func ? new Function(BNNewFunctionReference(func)) : nullptr;
+ instance->SetCurrentFunction(object);
}
void ScriptingInstance::SetCurrentBasicBlockCallback(void* ctxt, BNBasicBlock* block)
{
ScriptingInstance* instance = (ScriptingInstance*)ctxt;
- instance->SetCurrentBasicBlock(block ? new BasicBlock(BNNewBasicBlockReference(block)) : nullptr);
+ Ref<BasicBlock> object = block ? new BasicBlock(BNNewBasicBlockReference(block)) : nullptr;
+ instance->SetCurrentBasicBlock(object);
}