summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter LaFosse <peter@vector35.com>2019-01-12 13:16:12 -0500
committerPeter LaFosse <peter@vector35.com>2019-01-12 13:16:24 -0500
commit22c2a49db23efa53b04a8e5587749affa716ce2d (patch)
tree332d7392643c8c3709b850ce19116ce15d4640ce
parent9e5ded10703110ff1af7d1efc0d39c95ed6f0568 (diff)
Fix memory leak when allocaing BNInstructionTextToken
-rw-r--r--architecture.cpp5
-rw-r--r--datarenderer.cpp6
2 files changed, 10 insertions, 1 deletions
diff --git a/architecture.cpp b/architecture.cpp
index da0366cf..f7ec2d01 100644
--- a/architecture.cpp
+++ b/architecture.cpp
@@ -228,7 +228,12 @@ bool Architecture::GetInstructionTextCallback(void* ctxt, const uint8_t* data, u
void Architecture::FreeInstructionTextCallback(BNInstructionTextToken* tokens, size_t count)
{
for (size_t i = 0; i < count; i++)
+ {
BNFreeString(tokens[i].text);
+ for (size_t j = 0; j < tokens[j].namesCount; j++)
+ BNFreeString(tokens[i].typeNames[j]);
+ delete[] tokens[i].typeNames;
+ }
delete[] tokens;
}
diff --git a/datarenderer.cpp b/datarenderer.cpp
index bc33366e..c0536a6a 100644
--- a/datarenderer.cpp
+++ b/datarenderer.cpp
@@ -113,8 +113,12 @@ vector<DisassemblyTextLine> DataRenderer::GetLinesForData(BinaryView* data, uint
delete[] typeCtx;
for (size_t i = 0; i < prefix.size(); i++)
+ {
BNFreeString(prefixes[i].text);
-
+ for (size_t j = 0; j < prefixes[j].namesCount; j++)
+ BNFreeString(prefixes[i].typeNames[j]);
+ delete[] prefixes[i].typeNames;
+ }
delete[] prefixes;
vector<DisassemblyTextLine> result;