diff options
author | Daniel Dunbar <daniel@zuster.org> | 2010-03-20 22:36:35 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2010-03-20 22:36:35 +0000 |
commit | c6ab1901f922c854c84e9e055cbc83601df80add (patch) | |
tree | 36a1aa7b667e17ba2a8137811a3b4d9ace943445 /tools/llvm-mc/Disassembler.cpp | |
parent | 78fcf53a187584dec0b8eb25a34c826c918600ce (diff) |
llvm-mc: Fix MCInstPrinter memory leaks.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99101 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/llvm-mc/Disassembler.cpp')
-rw-r--r-- | tools/llvm-mc/Disassembler.cpp | 17 |
1 files changed, 8 insertions, 9 deletions
diff --git a/tools/llvm-mc/Disassembler.cpp b/tools/llvm-mc/Disassembler.cpp index dbfe7a5d06..0caf539ac9 100644 --- a/tools/llvm-mc/Disassembler.cpp +++ b/tools/llvm-mc/Disassembler.cpp @@ -47,8 +47,8 @@ public: }; } -static bool PrintInsts(const llvm::MCDisassembler &DisAsm, - llvm::MCInstPrinter &Printer, const ByteArrayTy &Bytes, +static bool PrintInsts(const MCDisassembler &DisAsm, + MCInstPrinter &Printer, const ByteArrayTy &Bytes, SourceMgr &SM) { // Wrap the vector in a MemoryObject. VectorMemoryObject memoryObject(Bytes); @@ -77,24 +77,23 @@ static bool PrintInsts(const llvm::MCDisassembler &DisAsm, } int Disassembler::disassemble(const Target &T, const std::string &Triple, - MemoryBuffer &Buffer) { + MemoryBuffer &Buffer) { // Set up disassembler. - llvm::OwningPtr<const llvm::MCAsmInfo> AsmInfo(T.createAsmInfo(Triple)); + OwningPtr<const MCAsmInfo> AsmInfo(T.createAsmInfo(Triple)); if (!AsmInfo) { errs() << "error: no assembly info for target " << Triple << "\n"; return -1; } - llvm::OwningPtr<const llvm::MCDisassembler> DisAsm(T.createMCDisassembler()); + OwningPtr<const MCDisassembler> DisAsm(T.createMCDisassembler()); if (!DisAsm) { errs() << "error: no disassembler for target " << Triple << "\n"; return -1; } - llvm::MCInstPrinter *InstPrinter = T.createMCInstPrinter(0, *AsmInfo, outs()); - - if (!InstPrinter) { + OwningPtr<MCInstPrinter> IP(T.createMCInstPrinter(0, *AsmInfo, outs())); + if (!IP) { errs() << "error: no instruction printer for target " << Triple << '\n'; return -1; } @@ -151,7 +150,7 @@ int Disassembler::disassemble(const Target &T, const std::string &Triple, } if (!ByteArray.empty()) - ErrorOccurred |= PrintInsts(*DisAsm, *InstPrinter, ByteArray, SM); + ErrorOccurred |= PrintInsts(*DisAsm, *IP, ByteArray, SM); return ErrorOccurred; } |