diff options
author | Chris Lattner <sabre@nondot.org> | 2003-05-22 18:26:48 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-05-22 18:26:48 +0000 |
commit | c56bdc5520ae014aff90886ed9521e67e45d97a8 (patch) | |
tree | e6a52da1e9d88f03521c6d276a1b6314e821ccfe /llvm/lib/Bytecode | |
parent | e69a1b986617ce3f0da726c5c207af9177c44dc9 (diff) | |
download | bcm5719-llvm-c56bdc5520ae014aff90886ed9521e67e45d97a8.tar.gz bcm5719-llvm-c56bdc5520ae014aff90886ed9521e67e45d97a8.zip |
Do not assert fail or crash when a bytecode parse fails!
llvm-svn: 6284
Diffstat (limited to 'llvm/lib/Bytecode')
-rw-r--r-- | llvm/lib/Bytecode/Reader/Reader.cpp | 1 | ||||
-rw-r--r-- | llvm/lib/Bytecode/Reader/ReaderInternals.h | 3 |
2 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/Bytecode/Reader/Reader.cpp b/llvm/lib/Bytecode/Reader/Reader.cpp index 7c0e6d43897..1a7e3d5e56b 100644 --- a/llvm/lib/Bytecode/Reader/Reader.cpp +++ b/llvm/lib/Bytecode/Reader/Reader.cpp @@ -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; } diff --git a/llvm/lib/Bytecode/Reader/ReaderInternals.h b/llvm/lib/Bytecode/Reader/ReaderInternals.h index 6709bc2d4d6..a8ee6fc8b94 100644 --- a/llvm/lib/Bytecode/Reader/ReaderInternals.h +++ b/llvm/lib/Bytecode/Reader/ReaderInternals.h @@ -45,6 +45,9 @@ public: FirstDerivedTyID = Type::FirstDerivedTyID; } ~BytecodeParser() { + freeState(); + } + void freeState() { freeTable(Values); freeTable(LateResolveValues); freeTable(ModuleValues); |