summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-03-03 00:19:53 -0500
committerRusty Wagner <rusty@vector35.com>2015-03-03 00:19:53 -0500
commite1acceecfd1a9b30a1fa19599dce049b50dfaa36 (patch)
tree98f8320c53f2217b0ee31284400de838cf72afee
parente931fbb18ed367745411592e3c408c1a04155a57 (diff)
Fix crashes on file close when analysis is still running
-rw-r--r--binaryninjaapi.h1
-rw-r--r--binaryview.cpp6
-rw-r--r--functiongraph.cpp4
3 files changed, 11 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index ce400e38..d94e7ca7 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -365,6 +365,7 @@ namespace BinaryNinja
void AddFunctionForAnalysis(Architecture* arch, uint64_t addr);
void AddEntryPointForAnalysis(Architecture* arch, uint64_t start);
void UpdateAnalysis();
+ void AbortAnalysis();
std::vector<Ref<Function>> GetAnalysisFunctionList();
Ref<Function> GetAnalysisFunction(Architecture* arch, uint64_t addr);
diff --git a/binaryview.cpp b/binaryview.cpp
index 6a218730..d274acb7 100644
--- a/binaryview.cpp
+++ b/binaryview.cpp
@@ -330,6 +330,12 @@ void BinaryView::UpdateAnalysis()
}
+void BinaryView::AbortAnalysis()
+{
+ BNAbortAnalysis(m_view);
+}
+
+
vector<Ref<Function>> BinaryView::GetAnalysisFunctionList()
{
size_t count;
diff --git a/functiongraph.cpp b/functiongraph.cpp
index 405046ea..4e48e3cf 100644
--- a/functiongraph.cpp
+++ b/functiongraph.cpp
@@ -11,6 +11,10 @@ FunctionGraph::FunctionGraph(BNFunctionGraph* graph): m_graph(graph)
FunctionGraph::~FunctionGraph()
{
+ // This object is going away, so ensure that any pending completion routines are
+ // no longer called
+ ClearOnComplete();
+
BNFreeFunctionGraph(m_graph);
}