forked from OSchip/llvm-project
ARMAsmParser: Plug a leak.
Using an object to do the cleanup may look like overkill, but it's safer and nicer than putting deletes everywhere. llvm-svn: 187696
This commit is contained in:
parent
dcfd5b525a
commit
23632bd466
|
@ -8009,11 +8009,19 @@ bool ARMAsmParser::parseDirectiveRegSave(SMLoc L, bool IsVector) {
|
|||
if (HandlerDataLoc.isValid())
|
||||
return Error(L, ".save or .vsave must precede .handlerdata directive");
|
||||
|
||||
// RAII object to make sure parsed operands are deleted.
|
||||
struct CleanupObject {
|
||||
SmallVector<MCParsedAsmOperand *, 1> Operands;
|
||||
~CleanupObject() {
|
||||
for (unsigned I = 0, E = Operands.size(); I != E; ++I)
|
||||
delete Operands[I];
|
||||
}
|
||||
} CO;
|
||||
|
||||
// Parse the register list
|
||||
SmallVector<MCParsedAsmOperand*, 1> Operands;
|
||||
if (parseRegisterList(Operands))
|
||||
if (parseRegisterList(CO.Operands))
|
||||
return true;
|
||||
ARMOperand *Op = (ARMOperand*)Operands[0];
|
||||
ARMOperand *Op = (ARMOperand*)CO.Operands[0];
|
||||
if (!IsVector && !Op->isRegList())
|
||||
return Error(L, ".save expects GPR registers");
|
||||
if (IsVector && !Op->isDPRRegList())
|
||||
|
|
Loading…
Reference in New Issue