diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2006-12-15 19:44:51 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2006-12-15 19:44:51 +0000 |
commit | 1c6cb06ff573a410dfe0c256868b23ba502efbab (patch) | |
tree | 765021524051b1348b153abf3c2ae684ec6cf6c7 /llvm/lib/Bytecode/Archive/ArchiveReader.cpp | |
parent | ffca910d4509f00b7d9eced6404f8c888306b4ec (diff) | |
download | bcm5719-llvm-1c6cb06ff573a410dfe0c256868b23ba502efbab.tar.gz bcm5719-llvm-1c6cb06ff573a410dfe0c256868b23ba502efbab.zip |
For PR1050:
Convert asserts into error messages.
llvm-svn: 32607
Diffstat (limited to 'llvm/lib/Bytecode/Archive/ArchiveReader.cpp')
-rw-r--r-- | llvm/lib/Bytecode/Archive/ArchiveReader.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp index e4769cac888..82ff9edc8ae 100644 --- a/llvm/lib/Bytecode/Archive/ArchiveReader.cpp +++ b/llvm/lib/Bytecode/Archive/ArchiveReader.cpp @@ -68,7 +68,11 @@ Archive::parseSymbolTable(const void* data, unsigned size, std::string* error) { ArchiveMember* Archive::parseMemberHeader(const char*& At, const char* End, std::string* error) { - assert(At + sizeof(ArchiveMemberHeader) < End && "Not enough data"); + if (At + sizeof(ArchiveMemberHeader) >= End) { + if (error) + *error = "Unexpected end of file"; + return 0; + } // Cast archive member header ArchiveMemberHeader* Hdr = (ArchiveMemberHeader*)At; @@ -498,7 +502,12 @@ Archive::findModulesDefiningSymbols(std::set<std::string>& symbols, std::set<ModuleProvider*>& result, std::string* error) { - assert(mapfile && base && "Can't findModulesDefiningSymbols on new archive"); + if (!mapfile || !base) { + if (error) + *error = "Empty archive invalid for finding modules defining symbols"; + return false; + } + if (symTab.empty()) { // We don't have a symbol table, so we must build it now but lets also // make sure that we populate the modules table as we do this to ensure |