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 | cd5561a56e1521c7dc18744dcd371d255b580fdf (patch) | |
tree | 117b16301be70b3aff3ce54cf352c3028d48cf87 /lib | |
parent | c2ff962bf97761a54c94d2dadb555060403d49c6 (diff) |
For PR1050:
Convert asserts into error messages.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32607 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Archive/Archive.cpp | 7 | ||||
-rw-r--r-- | lib/Archive/ArchiveReader.cpp | 13 | ||||
-rw-r--r-- | lib/Archive/ArchiveWriter.cpp | 13 | ||||
-rw-r--r-- | lib/Bytecode/Archive/Archive.cpp | 7 | ||||
-rw-r--r-- | lib/Bytecode/Archive/ArchiveReader.cpp | 13 | ||||
-rw-r--r-- | lib/Bytecode/Archive/ArchiveWriter.cpp | 13 |
6 files changed, 54 insertions, 12 deletions
diff --git a/lib/Archive/Archive.cpp b/lib/Archive/Archive.cpp index a661a4e992..3bbc49dbe2 100644 --- a/lib/Archive/Archive.cpp +++ b/lib/Archive/Archive.cpp @@ -62,7 +62,12 @@ ArchiveMember::ArchiveMember(Archive* PAR) // different file, presumably as an update to the member. It also makes sure // the flags are reset correctly. bool ArchiveMember::replaceWith(const sys::Path& newFile, std::string* ErrMsg) { - assert(newFile.exists() && "Can't replace with a non-existent file"); + if (!newFile.exists()) { + if (ErrMsg) + *ErrMsg = "Can not replace an archive member with a non-existent file"; + return true; + } + data = 0; path = newFile; diff --git a/lib/Archive/ArchiveReader.cpp b/lib/Archive/ArchiveReader.cpp index e4769cac88..82ff9edc8a 100644 --- a/lib/Archive/ArchiveReader.cpp +++ b/lib/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 diff --git a/lib/Archive/ArchiveWriter.cpp b/lib/Archive/ArchiveWriter.cpp index d07fe960b5..9f4e797998 100644 --- a/lib/Archive/ArchiveWriter.cpp +++ b/lib/Archive/ArchiveWriter.cpp @@ -153,7 +153,11 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr, bool Archive::addFileBefore(const sys::Path& filePath, iterator where, std::string* ErrMsg) { - assert(filePath.exists() && "Can't add a non-existent file"); + if (!filePath.exists()) { + if (ErrMsg) + *ErrMsg = "Can not add a non-existent file to archive"; + return true; + } ArchiveMember* mbr = new ArchiveMember(this); @@ -385,8 +389,11 @@ Archive::writeToDisk(bool CreateSymbolTable, bool TruncateNames, bool Compress, { // Make sure they haven't opened up the file, not loaded it, // but are now trying to write it which would wipe out the file. - assert(!(members.empty() && mapfile->size() > 8) && - "Can't write an archive not opened for writing"); + if (members.empty() && mapfile->size() > 8) { + if (ErrMsg) + *ErrMsg = "Can't write an archive not opened for writing"; + return true; + } // Create a temporary file to store the archive in sys::Path TmpArchive = archPath; diff --git a/lib/Bytecode/Archive/Archive.cpp b/lib/Bytecode/Archive/Archive.cpp index a661a4e992..3bbc49dbe2 100644 --- a/lib/Bytecode/Archive/Archive.cpp +++ b/lib/Bytecode/Archive/Archive.cpp @@ -62,7 +62,12 @@ ArchiveMember::ArchiveMember(Archive* PAR) // different file, presumably as an update to the member. It also makes sure // the flags are reset correctly. bool ArchiveMember::replaceWith(const sys::Path& newFile, std::string* ErrMsg) { - assert(newFile.exists() && "Can't replace with a non-existent file"); + if (!newFile.exists()) { + if (ErrMsg) + *ErrMsg = "Can not replace an archive member with a non-existent file"; + return true; + } + data = 0; path = newFile; diff --git a/lib/Bytecode/Archive/ArchiveReader.cpp b/lib/Bytecode/Archive/ArchiveReader.cpp index e4769cac88..82ff9edc8a 100644 --- a/lib/Bytecode/Archive/ArchiveReader.cpp +++ b/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 diff --git a/lib/Bytecode/Archive/ArchiveWriter.cpp b/lib/Bytecode/Archive/ArchiveWriter.cpp index d07fe960b5..9f4e797998 100644 --- a/lib/Bytecode/Archive/ArchiveWriter.cpp +++ b/lib/Bytecode/Archive/ArchiveWriter.cpp @@ -153,7 +153,11 @@ Archive::fillHeader(const ArchiveMember &mbr, ArchiveMemberHeader& hdr, bool Archive::addFileBefore(const sys::Path& filePath, iterator where, std::string* ErrMsg) { - assert(filePath.exists() && "Can't add a non-existent file"); + if (!filePath.exists()) { + if (ErrMsg) + *ErrMsg = "Can not add a non-existent file to archive"; + return true; + } ArchiveMember* mbr = new ArchiveMember(this); @@ -385,8 +389,11 @@ Archive::writeToDisk(bool CreateSymbolTable, bool TruncateNames, bool Compress, { // Make sure they haven't opened up the file, not loaded it, // but are now trying to write it which would wipe out the file. - assert(!(members.empty() && mapfile->size() > 8) && - "Can't write an archive not opened for writing"); + if (members.empty() && mapfile->size() > 8) { + if (ErrMsg) + *ErrMsg = "Can't write an archive not opened for writing"; + return true; + } // Create a temporary file to store the archive in sys::Path TmpArchive = archPath; |