[llvm] r271013 - Make sure these error codes are marked as checked
David Majnemer via llvm-commits
llvm-commits at lists.llvm.org
Fri May 27 09:16:57 PDT 2016
Author: majnemer
Date: Fri May 27 11:16:56 2016
New Revision: 271013
URL: http://llvm.org/viewvc/llvm-project?rev=271013&view=rev
Log:
Make sure these error codes are marked as checked
Modified:
llvm/trunk/lib/DebugInfo/PDB/Raw/NameHashTable.cpp
llvm/trunk/lib/DebugInfo/PDB/Raw/NameMap.cpp
llvm/trunk/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/NameHashTable.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/NameHashTable.cpp?rev=271013&r1=271012&r2=271013&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/NameHashTable.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/NameHashTable.cpp Fri May 27 11:16:56 2016
@@ -98,16 +98,18 @@ Error NameHashTable::load(codeview::Stre
Signature = H->Signature;
HashVersion = H->HashVersion;
if (auto EC = Stream.readStreamRef(NamesBuffer, H->ByteSize))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Invalid hash table byte length");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Invalid hash table byte length"));
const support::ulittle32_t *HashCount;
if (auto EC = Stream.readObject(HashCount))
return EC;
if (auto EC = Stream.readArray(IDs, *HashCount))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Could not read bucket array");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Could not read bucket array"));
if (Stream.bytesRemaining() < sizeof(support::ulittle32_t))
return make_error<RawError>(raw_error_code::corrupt_file,
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/NameMap.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/NameMap.cpp?rev=271013&r1=271012&r2=271013&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/NameMap.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/NameMap.cpp Fri May 27 11:16:56 2016
@@ -22,9 +22,10 @@ Error NameMap::load(codeview::StreamRead
// This is some sort of weird string-set/hash table encoded in the stream.
// It starts with the number of bytes in the table.
uint32_t NumberOfBytes;
- if (Stream.readInteger(NumberOfBytes))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map length");
+ if (auto EC = Stream.readInteger(NumberOfBytes))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map length"));
if (Stream.bytesRemaining() < NumberOfBytes)
return make_error<RawError>(raw_error_code::corrupt_file,
"Invalid name map length");
@@ -36,31 +37,35 @@ Error NameMap::load(codeview::StreamRead
// This appears to be equivalent to the total number of strings *actually*
// in the name table.
uint32_t HashSize;
- if (Stream.readInteger(HashSize))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map hash size");
+ if (auto EC = Stream.readInteger(HashSize))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map hash size"));
// This appears to be an upper bound on the number of strings in the name
// table.
uint32_t MaxNumberOfStrings;
- if (Stream.readInteger(MaxNumberOfStrings))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map max strings");
+ if (auto EC = Stream.readInteger(MaxNumberOfStrings))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map max strings"));
// This appears to be a hash table which uses bitfields to determine whether
// or not a bucket is 'present'.
uint32_t NumPresentWords;
- if (Stream.readInteger(NumPresentWords))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map num words");
+ if (auto EC = Stream.readInteger(NumPresentWords))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map num words"));
// Store all the 'present' bits in a vector for later processing.
SmallVector<uint32_t, 1> PresentWords;
for (uint32_t I = 0; I != NumPresentWords; ++I) {
uint32_t Word;
- if (Stream.readInteger(Word))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map word");
+ if (auto EC = Stream.readInteger(Word))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map word"));
PresentWords.push_back(Word);
}
@@ -68,17 +73,20 @@ Error NameMap::load(codeview::StreamRead
// This appears to be a hash table which uses bitfields to determine whether
// or not a bucket is 'deleted'.
uint32_t NumDeletedWords;
- if (Stream.readInteger(NumDeletedWords))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map num deleted words");
+ if (auto EC = Stream.readInteger(NumDeletedWords))
+ return joinErrors(
+ std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map num deleted words"));
// Store all the 'deleted' bits in a vector for later processing.
SmallVector<uint32_t, 1> DeletedWords;
for (uint32_t I = 0; I != NumDeletedWords; ++I) {
uint32_t Word;
- if (Stream.readInteger(Word))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map deleted word");
+ if (auto EC = Stream.readInteger(Word))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map deleted word"));
DeletedWords.push_back(Word);
}
@@ -99,15 +107,17 @@ Error NameMap::load(codeview::StreamRead
// This appears to be an offset relative to the start of the strings.
// It tells us where the null-terminated string begins.
uint32_t NameOffset;
- if (Stream.readInteger(NameOffset))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map name offset");
+ if (auto EC = Stream.readInteger(NameOffset))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map name offset"));
// This appears to be a stream number into the stream directory.
uint32_t NameIndex;
- if (Stream.readInteger(NameIndex))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map name index");
+ if (auto EC = Stream.readInteger(NameIndex))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map name index"));
// Compute the offset of the start of the string relative to the stream.
uint32_t StringOffset = StringsOffset + NameOffset;
@@ -115,9 +125,10 @@ Error NameMap::load(codeview::StreamRead
// Pump out our c-string from the stream.
StringRef Str;
Stream.setOffset(StringOffset);
- if (Stream.readZeroString(Str))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Expected name map name");
+ if (auto EC = Stream.readZeroString(Str))
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Expected name map name"));
Stream.setOffset(OldOffset);
// Add this to a string-map from name to stream number.
Modified: llvm/trunk/lib/DebugInfo/PDB/Raw/PublicsStream.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/DebugInfo/PDB/Raw/PublicsStream.cpp?rev=271013&r1=271012&r2=271013&view=diff
==============================================================================
--- llvm/trunk/lib/DebugInfo/PDB/Raw/PublicsStream.cpp (original)
+++ llvm/trunk/lib/DebugInfo/PDB/Raw/PublicsStream.cpp Fri May 27 11:16:56 2016
@@ -106,15 +106,17 @@ Error PublicsStream::reload() {
"Invalid HR array size.");
uint32_t NumHashRecords = HashHdr->HrSize / sizeof(PSHashRecord);
if (auto EC = Reader.readArray(HashRecords, NumHashRecords))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Could not read an HR array");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Could not read an HR array"));
// A bitmap of a fixed length follows.
size_t BitmapSizeInBits = alignTo(IPHR_HASH + 1, 32);
uint32_t NumBitmapEntries = BitmapSizeInBits / 8;
if (auto EC = Reader.readBytes(NumBitmapEntries, Bitmap))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Could not read a bitmap.");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Could not read a bitmap."));
for (uint8_t B : Bitmap)
NumBuckets += countPopulation(B);
@@ -125,24 +127,28 @@ Error PublicsStream::reload() {
// Hash buckets follow.
if (auto EC = Reader.readArray(HashBuckets, NumBuckets))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Hash buckets corrupted.");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Hash buckets corrupted."));
// Something called "address map" follows.
uint32_t NumAddressMapEntries = Header->AddrMap / sizeof(uint32_t);
if (auto EC = Reader.readArray(AddressMap, NumAddressMapEntries))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Could not read an address map.");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Could not read an address map."));
// Something called "thunk map" follows.
if (auto EC = Reader.readArray(ThunkMap, Header->NumThunks))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Could not read a thunk map.");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Could not read a thunk map."));
// Something called "section map" follows.
if (auto EC = Reader.readArray(SectionOffsets, Header->NumSections))
- return make_error<RawError>(raw_error_code::corrupt_file,
- "Could not read a section map.");
+ return joinErrors(std::move(EC),
+ make_error<RawError>(raw_error_code::corrupt_file,
+ "Could not read a section map."));
if (Reader.bytesRemaining() > 0)
return make_error<RawError>(raw_error_code::corrupt_file,
More information about the llvm-commits
mailing list