mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2025-02-01 05:01:59 +01:00
Plug some leaks in edis.
- Don't leak parsed operands during tokenization. - Don't leak printed insts in llvm-mc. llvm-svn: 126381
This commit is contained in:
parent
724eb8706a
commit
feccb33180
@ -194,6 +194,10 @@ int EDToken::tokenize(std::vector<EDToken*> &tokens,
|
||||
tokens.push_back(token);
|
||||
}
|
||||
|
||||
// Free any parsed operands.
|
||||
for (unsigned i = 0, e = parsedOperands.size(); i != e; ++i)
|
||||
delete parsedOperands[i];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -227,8 +227,8 @@ int Disassembler::disassembleEnhanced(const std::string &TS,
|
||||
}
|
||||
|
||||
EDDisassembler::initialize();
|
||||
EDDisassembler *disassembler =
|
||||
EDDisassembler::getDisassembler(TS.c_str(), AS);
|
||||
OwningPtr<EDDisassembler>
|
||||
disassembler(EDDisassembler::getDisassembler(TS.c_str(), AS));
|
||||
|
||||
if (disassembler == 0) {
|
||||
errs() << "error: couldn't get disassembler for " << TS << '\n';
|
||||
@ -236,8 +236,8 @@ int Disassembler::disassembleEnhanced(const std::string &TS,
|
||||
}
|
||||
|
||||
while (ByteArray.size()) {
|
||||
EDInst *inst =
|
||||
disassembler->createInst(byteArrayReader, 0, &ByteArray);
|
||||
OwningPtr<EDInst>
|
||||
inst(disassembler->createInst(byteArrayReader, 0, &ByteArray));
|
||||
|
||||
ByteArray.erase (ByteArray.begin(), ByteArray.begin() + inst->byteSize());
|
||||
|
||||
@ -330,7 +330,7 @@ int Disassembler::disassembleEnhanced(const std::string &TS,
|
||||
}
|
||||
|
||||
uint64_t evaluatedResult;
|
||||
void *Arg[] = { disassembler, &Out };
|
||||
void *Arg[] = { disassembler.get(), &Out };
|
||||
if (operand->evaluate(evaluatedResult, verboseEvaluator, Arg)) {
|
||||
errs() << "error: Couldn't evaluate an operand\n";
|
||||
return -1;
|
||||
|
Loading…
x
Reference in New Issue
Block a user