diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2004-12-13 03:22:31 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2004-12-13 03:22:31 +0000 |
commit | ac9fe828758a5c08fdb552d73b982e51a68cd515 (patch) | |
tree | a619d64edc0e2bc02032fd20329a4f727e21e64b /llvm/lib | |
parent | 22b7eac8555a8e848b9c7b26d83fccb3509543de (diff) | |
download | bcm5719-llvm-ac9fe828758a5c08fdb552d73b982e51a68cd515.tar.gz bcm5719-llvm-ac9fe828758a5c08fdb552d73b982e51a68cd515.zip |
Make sure the Archive gets deleted if there's an error.
llvm-svn: 18869
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Bytecode/Archive/ArchiveReader.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp index a813371958d..d4a4921854e 100644 --- a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp +++ b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp @@ -282,9 +282,9 @@ Archive::loadArchive() { Archive* Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) { try { - Archive* result = new Archive(file, true); + std::auto_ptr<Archive> result ( new Archive(file, true)); result->loadArchive(); - return result; + return result.release(); } catch (const std::string& msg) { if (ErrorMessage) { *ErrorMessage = msg; @@ -377,9 +377,9 @@ Archive::loadSymbolTable() { Archive* Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) { try { - Archive* result = new Archive(file, true); + std::auto_ptr<Archive> result ( new Archive(file, true) ); result->loadSymbolTable(); - return result; + return result.release(); } catch (const std::string& msg) { if (ErrorMessage) { *ErrorMessage = msg; |