diff options
author | Chris Lattner <sabre@nondot.org> | 2002-03-31 07:16:49 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2002-03-31 07:16:49 +0000 |
commit | 09c07538a8c99dd69aaa6d129b3a2ed02cfe4329 (patch) | |
tree | 519ebbc91eccfb09dbabacc784dcabf0280b43a6 | |
parent | b28bf054834a2f41de7bda1bbadb54910440609d (diff) |
* Fix nondeleted type handle which could cause type pool corruption (and
a memory leak)
* Fix memory leak of Argument nodes on function prototypes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2065 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/AsmParser/llvmAsmParser.y | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/lib/AsmParser/llvmAsmParser.y b/lib/AsmParser/llvmAsmParser.y index 5692bf48e2..3c0bb8f101 100644 --- a/lib/AsmParser/llvmAsmParser.y +++ b/lib/AsmParser/llvmAsmParser.y @@ -1094,6 +1094,7 @@ ConstPool : ConstPool OptAssign CONST ConstVal { (char*)GV->getName().c_str())); } } + delete $6; } | /* empty: end of list */ { } @@ -1224,8 +1225,10 @@ FunctionHeaderH : OptInternal TypesV STRINGCONSTANT '(' ArgList ')' { } else if ($5) { // If we are a declaration, we should free the memory for the argument list! for (list<pair<FunctionArgument*, char*> >::iterator I = $5->begin(); - I != $5->end(); ++I) + I != $5->end(); ++I) { if (I->second) free(I->second); // Free the memory for the name... + delete I->first; // Free the unused function argument + } delete $5; // Free the memory for the list itself } } |