From 5af46883f27eb66ada1ca01e011e80bfb838f08e Mon Sep 17 00:00:00 2001 From: Reid Spencer Date: Mon, 13 Dec 2004 02:59:03 +0000 Subject: Implement error handling in OpenAndLoad* functions so the Linker can handle it. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@18853 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Archive/ArchiveReader.cpp | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) (limited to 'lib/Archive/ArchiveReader.cpp') diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp index b00487f0de..a813371958 100644 --- a/lib/Archive/ArchiveReader.cpp +++ b/lib/Archive/ArchiveReader.cpp @@ -280,13 +280,17 @@ Archive::loadArchive() { // Open and completely load the archive file. Archive* -Archive::OpenAndLoad(const sys::Path& file) { - - Archive* result = new Archive(file, true); - - result->loadArchive(); - - return result; +Archive::OpenAndLoad(const sys::Path& file, std::string* ErrorMessage) { + try { + Archive* result = new Archive(file, true); + result->loadArchive(); + return result; + } catch (const std::string& msg) { + if (ErrorMessage) { + *ErrorMessage = msg; + } + return 0; + } } // Get all the bytecode modules from the archive @@ -371,12 +375,17 @@ Archive::loadSymbolTable() { // Open the archive and load just the symbol tables Archive* -Archive::OpenAndLoadSymbols(const sys::Path& file) { - Archive* result = new Archive(file, true); - - result->loadSymbolTable(); - - return result; +Archive::OpenAndLoadSymbols(const sys::Path& file, std::string* ErrorMessage) { + try { + Archive* result = new Archive(file, true); + result->loadSymbolTable(); + return result; + } catch (const std::string& msg) { + if (ErrorMessage) { + *ErrorMessage = msg; + } + return 0; + } } // Look up one symbol in the symbol table and return a ModuleProvider for the -- cgit v1.2.3-18-g5258