summaryrefslogtreecommitdiff
path: root/callingconvention.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2018-03-16 20:07:48 -0400
committerRusty Wagner <rusty@vector35.com>2018-03-16 20:07:48 -0400
commit0700b6ba0b92ff99328f764a5e48192dc6f961c6 (patch)
tree57d162d1d532cc87535b9d5eccb3014a636beb0b /callingconvention.cpp
parentb8ac51a5ff98a79a205160b53cc74c324335250b (diff)
Fix reference leak in calling conventions
Diffstat (limited to 'callingconvention.cpp')
-rw-r--r--callingconvention.cpp12
1 files changed, 8 insertions, 4 deletions
diff --git a/callingconvention.cpp b/callingconvention.cpp
index 2eb57567..a56b8f11 100644
--- a/callingconvention.cpp
+++ b/callingconvention.cpp
@@ -195,8 +195,10 @@ void CallingConvention::GetIncomingVariableForParameterVariableCallback(void* ct
BNFunction* func, BNVariable* result)
{
CallingConvention* cc = (CallingConvention*)ctxt;
- *result = cc->GetIncomingVariableForParameterVariable(*var,
- func ? new Function(BNNewFunctionReference(func)) : nullptr);
+ Ref<Function> funcObj;
+ if (func)
+ funcObj = new Function(BNNewFunctionReference(func));
+ *result = cc->GetIncomingVariableForParameterVariable(*var, funcObj);
}
@@ -204,8 +206,10 @@ void CallingConvention::GetParameterVariableForIncomingVariableCallback(void* ct
BNFunction* func, BNVariable* result)
{
CallingConvention* cc = (CallingConvention*)ctxt;
- *result = cc->GetParameterVariableForIncomingVariable(*var,
- func ? new Function(BNNewFunctionReference(func)) : nullptr);
+ Ref<Function> funcObj;
+ if (func)
+ funcObj = new Function(BNNewFunctionReference(func));
+ *result = cc->GetParameterVariableForIncomingVariable(*var, funcObj);
}