summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2018-12-19 10:44:45 -0500
committerPeter LaFosse <peter@vector35.com>2018-12-19 10:44:45 -0500
commitf93fc67f3f18488882293e08b7ba76b1c7781cbf (patch)
tree48d3bc7e5c150877737cb86876c65d9dcab554f6
parent10a89e67ab3f3129570382f3fa4c500e77d8dab6 (diff)
Don't free InstructionTextTokens in the core if they were alloced in the API
-rw-r--r--architecture.cpp4
-rw-r--r--datarenderer.cpp6
2 files changed, 8 insertions, 2 deletions
diff --git a/architecture.cpp b/architecture.cpp
index ea32a09e..da0366cf 100644
--- a/architecture.cpp
+++ b/architecture.cpp
@@ -227,7 +227,9 @@ bool Architecture::GetInstructionTextCallback(void* ctxt, const uint8_t* data, u
void Architecture::FreeInstructionTextCallback(BNInstructionTextToken* tokens, size_t count)
{
- BNFreeInstructionText(tokens, count);
+ for (size_t i = 0; i < count; i++)
+ BNFreeString(tokens[i].text);
+ delete[] tokens;
}
diff --git a/datarenderer.cpp b/datarenderer.cpp
index fee457e8..bc33366e 100644
--- a/datarenderer.cpp
+++ b/datarenderer.cpp
@@ -112,7 +112,11 @@ vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint
prefix.size(), width, &count, typeCtx, context.size());
delete[] typeCtx;
- BNFreeInstructionText(prefixes, prefix.size());
+ for (size_t i = 0; i < prefix.size(); i++)
+ BNFreeString(prefixes[i].text);
+
+ delete[] prefixes;
+
vector<DisassemblyTextLine> result;
result.reserve(count);
for (size_t i = 0; i < count; i++)