Do not assert fail or crash when a bytecode parse fails!
authorChris Lattner <sabre@nondot.org>
Thu, 22 May 2003 18:26:48 +0000 (18:26 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 22 May 2003 18:26:48 +0000 (18:26 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6284 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Bytecode/Reader/Reader.cpp
lib/Bytecode/Reader/ReaderInternals.h

index 7c0e6d438978147c8aae4207951aafb4424c5dca..1a7e3d5e56b0c8d14a98d419551899714467ad38 100644 (file)
@@ -642,6 +642,7 @@ Module *BytecodeParser::ParseBytecode(const unsigned char *Buf,
 
   TheModule = new Module(ModuleID);
   if (ParseModule(Buf, EndBuf)) {
+    freeState();       // Must destroy handles before deleting module!
     delete TheModule;
     TheModule = 0;
   }
index 6709bc2d4d682bbff9b55d5cd7962c3025972e24..a8ee6fc8b941004b0978ea6ee849266ed4c970c6 100644 (file)
@@ -45,6 +45,9 @@ public:
     FirstDerivedTyID = Type::FirstDerivedTyID;
   }
   ~BytecodeParser() {
+    freeState();
+  }
+  void freeState() {
     freeTable(Values);
     freeTable(LateResolveValues);
     freeTable(ModuleValues);