diff options
| author | Xusheng <xusheng@vector35.com> | 2022-09-07 18:07:19 +0800 |
|---|---|---|
| committer | Xusheng <xusheng@vector35.com> | 2022-09-08 12:50:17 +0800 |
| commit | 5e9ed278cd437743d32f42094a8fb94228e8e17e (patch) | |
| tree | 04a17356c183f86453b451d1456da220df4c0811 | |
| parent | 4f2874173637835f4da74e919658d8edc90448fe (diff) | |
Fix memory leak issue related to ScriptingInstance. Close https://github.com/Vector35/binaryninja-api/issues/3461.
| -rw-r--r-- | scriptingprovider.cpp | 9 |
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); } |
