From f5b948bf38d8757f4e9a0d7af4edaa4a6fffec27 Mon Sep 17 00:00:00 2001 From: Christoph Egger Date: Tue, 27 May 2014 14:35:18 +0200 Subject: [PATCH 1/1] Avoid memory leak --- src/disassembler/llvm/LLVMDisassembler.cxx | 10 ++++++++++ src/disassembler/llvm/LLVMDisassembler.hxx | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/disassembler/llvm/LLVMDisassembler.cxx b/src/disassembler/llvm/LLVMDisassembler.cxx index 3494b79..7bce1cf 100644 --- a/src/disassembler/llvm/LLVMDisassembler.cxx +++ b/src/disassembler/llvm/LLVMDisassembler.cxx @@ -110,6 +110,16 @@ LLVMDisassembler::LLVMDisassembler(const std::string& filename) disassemble(); } +LLVMDisassembler::~LLVMDisassembler() { + std::for_each(functions.begin(), functions.end(), + [](std::pair it) { + delete it.second; + }); + std::for_each(blocks.begin(), blocks.end(), + [](std::pair it) { + delete it.second; + }); +} void LLVMDisassembler::disassemble() { std::stack remaining_functions; diff --git a/src/disassembler/llvm/LLVMDisassembler.hxx b/src/disassembler/llvm/LLVMDisassembler.hxx index 87dbefa..42024ee 100644 --- a/src/disassembler/llvm/LLVMDisassembler.hxx +++ b/src/disassembler/llvm/LLVMDisassembler.hxx @@ -11,13 +11,14 @@ #include "disassembler/BasicBlock.hxx" #include "disassembler/Function.hxx" #include "disassembler/llvm/LLVMBasicBlock.hxx" +#include "disassembler/llvm/LLVMFunction.hxx" class LLVMDisassembler : public Disassembler { public: LLVMDisassembler(const std::string& filename); - virtual ~LLVMDisassembler() {}; + virtual ~LLVMDisassembler(); void getSymbols(); uint64_t entryAddress(); -- 2.39.2