30
30
#include " llvm/ADT/SmallString.h"
31
31
#include " llvm/ADT/STLExtras.h"
32
32
#include " llvm/ADT/StringExtras.h"
33
- #include " llvm/Bitcode/BitstreamReader.h"
34
- #include " llvm/Bitcode/BitstreamWriter.h"
35
33
#include " llvm/Bitcode/RecordLayout.h"
34
+ #include " llvm/Bitstream/BitstreamReader.h"
35
+ #include " llvm/Bitstream/BitstreamWriter.h"
36
36
#include " llvm/Support/DJB.h"
37
37
#include " llvm/Support/OnDiskHashTable.h"
38
38
@@ -1482,7 +1482,13 @@ SwiftLookupTableReader::create(clang::ModuleFileExtension *extension,
1482
1482
// Look for the base name -> entities table record.
1483
1483
SmallVector<uint64_t , 64 > scratch;
1484
1484
auto cursor = stream;
1485
- auto next = cursor.advance ();
1485
+ llvm::Expected<llvm::BitstreamEntry> maybeNext = cursor.advance ();
1486
+ if (!maybeNext) {
1487
+ // FIXME this drops the error on the floor.
1488
+ consumeError (maybeNext.takeError ());
1489
+ return nullptr ;
1490
+ }
1491
+ llvm::BitstreamEntry next = maybeNext.get ();
1486
1492
std::unique_ptr<SerializedBaseNameToEntitiesTable> serializedTable;
1487
1493
std::unique_ptr<SerializedGlobalsAsMembersTable> globalsAsMembersTable;
1488
1494
ArrayRef<clang::serialization::DeclID> categories;
@@ -1495,14 +1501,27 @@ SwiftLookupTableReader::create(clang::ModuleFileExtension *extension,
1495
1501
// API notes format.
1496
1502
if (cursor.SkipBlock ())
1497
1503
return nullptr ;
1498
-
1499
- next = cursor.advance ();
1504
+
1505
+ maybeNext = cursor.advance ();
1506
+ if (!maybeNext) {
1507
+ // FIXME this drops the error on the floor.
1508
+ consumeError (maybeNext.takeError ());
1509
+ return nullptr ;
1510
+ }
1511
+ next = maybeNext.get ();
1500
1512
continue ;
1501
1513
}
1502
1514
1503
1515
scratch.clear ();
1504
1516
StringRef blobData;
1505
- unsigned kind = cursor.readRecord (next.ID , scratch, &blobData);
1517
+ llvm::Expected<unsigned > maybeKind =
1518
+ cursor.readRecord (next.ID , scratch, &blobData);
1519
+ if (!maybeKind) {
1520
+ // FIXME this drops the error on the floor.
1521
+ consumeError (maybeNext.takeError ());
1522
+ return nullptr ;
1523
+ }
1524
+ unsigned kind = maybeKind.get ();
1506
1525
switch (kind) {
1507
1526
case BASE_NAME_TO_ENTITIES_RECORD_ID: {
1508
1527
// Already saw base name -> entities table.
@@ -1554,7 +1573,13 @@ SwiftLookupTableReader::create(clang::ModuleFileExtension *extension,
1554
1573
break ;
1555
1574
}
1556
1575
1557
- next = cursor.advance ();
1576
+ maybeNext = cursor.advance ();
1577
+ if (!maybeNext) {
1578
+ // FIXME this drops the error on the floor.
1579
+ consumeError (maybeNext.takeError ());
1580
+ return nullptr ;
1581
+ }
1582
+ next = maybeNext.get ();
1558
1583
}
1559
1584
1560
1585
if (!serializedTable) return nullptr ;
0 commit comments