* Fix nondeleted type handle which could cause type pool corruption (and
authorChris Lattner <sabre@nondot.org>
Sun, 31 Mar 2002 07:16:49 +0000 (07:16 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 31 Mar 2002 07:16:49 +0000 (07:16 +0000)
  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

lib/AsmParser/llvmAsmParser.y

index 5692bf48e22977395bcbcd2bcc4e14d9dae0891e..3c0bb8f101d4cf4e1b82e9626206f2ef14d23ec0 100644 (file)
@@ -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
   }
 }