From c6ab1901f922c854c84e9e055cbc83601df80add Mon Sep 17 00:00:00 2001 From: Daniel Dunbar Date: Sat, 20 Mar 2010 22:36:35 +0000 Subject: [PATCH] llvm-mc: Fix MCInstPrinter memory leaks. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@99101 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/llvm-mc/Disassembler.cpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/tools/llvm-mc/Disassembler.cpp b/tools/llvm-mc/Disassembler.cpp index dbfe7a5d06f..0caf539ac95 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 AsmInfo(T.createAsmInfo(Triple)); + OwningPtr AsmInfo(T.createAsmInfo(Triple)); if (!AsmInfo) { errs() << "error: no assembly info for target " << Triple << "\n"; return -1; } - llvm::OwningPtr DisAsm(T.createMCDisassembler()); + OwningPtr 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 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; } -- 2.34.1