]> granicus.if.org Git - llvm/commitdiff
Fix Modi and File count if there are more than 65535 modules/files.
authorRui Ueyama <ruiu@google.com>
Wed, 16 Nov 2016 00:38:33 +0000 (00:38 +0000)
committerRui Ueyama <ruiu@google.com>
Wed, 16 Nov 2016 00:38:33 +0000 (00:38 +0000)
These numbers are intended to be capped at 65535, but
`std::max<uint16_t>(UINT16_MAX, N)` always returns N for any N because
the expression is the same as `std::max((uint16_t)UINT16_MAX, (uint16_t)N)`.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@287060 91177308-0d34-0410-b5e6-96231b3b80d8

lib/DebugInfo/PDB/Raw/DbiStreamBuilder.cpp

index 7001030f9a242aa33739776e27d6fa26fdd631ca..9989c4c6dd77141c18f1eafc0b9605451dab7a58 100644 (file)
@@ -185,8 +185,8 @@ Error DbiStreamBuilder::generateFileInfoSubstream() {
       WritableStreamRef(FileInfoBuffer).keep_front(NamesOffset);
   StreamWriter MetadataWriter(MetadataBuffer);
 
-  uint16_t ModiCount = std::min<uint16_t>(UINT16_MAX, ModuleInfos.size());
-  uint16_t FileCount = std::min<uint16_t>(UINT16_MAX, SourceFileNames.size());
+  uint16_t ModiCount = std::min<uint32_t>(UINT16_MAX, ModuleInfos.size());
+  uint16_t FileCount = std::min<uint32_t>(UINT16_MAX, SourceFileNames.size());
   if (auto EC = MetadataWriter.writeInteger(ModiCount)) // NumModules
     return EC;
   if (auto EC = MetadataWriter.writeInteger(FileCount)) // NumSourceFiles