From 5e9ed278cd437743d32f42094a8fb94228e8e17e Mon Sep 17 00:00:00 2001 From: Xusheng Date: Wed, 7 Sep 2022 18:07:19 +0800 Subject: Fix memory leak issue related to ScriptingInstance. Close https://github.com/Vector35/binaryninja-api/issues/3461. --- scriptingprovider.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'scriptingprovider.cpp') 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 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 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 object = block ? new BasicBlock(BNNewBasicBlockReference(block)) : nullptr; + instance->SetCurrentBasicBlock(object); } -- cgit v1.3.1