diff options
author | Steve Naroff <snaroff@apple.com> | 2009-04-25 12:07:12 +0000 |
---|---|---|
committer | Steve Naroff <snaroff@apple.com> | 2009-04-25 12:07:12 +0000 |
commit | 72de9219a74be47ea5aa6cf9a730d17e2366f268 (patch) | |
tree | 22769f2b6f970e08ac653eeea7f83decdabb72d5 /lib/Frontend/PCHReader.cpp | |
parent | 5153ee66d6d4fb37b02f85df38e48dc8b46660df (diff) |
Fix a major bug in PCHReader::ReadSelectorBlock().
Also simplify some syntax in PCHWriter::WritePreprocessor(), suggested by Chris.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@70039 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Frontend/PCHReader.cpp')
-rw-r--r-- | lib/Frontend/PCHReader.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/lib/Frontend/PCHReader.cpp b/lib/Frontend/PCHReader.cpp index 4c3e248c64..78be893bc7 100644 --- a/lib/Frontend/PCHReader.cpp +++ b/lib/Frontend/PCHReader.cpp @@ -1750,14 +1750,15 @@ bool PCHReader::ReadSelectorBlock() { for (unsigned SelIdx = 0; SelIdx < NumSels; SelIdx++) { unsigned NumArgs = Record[Idx++]; KeyIdents.clear(); - if (NumArgs <= 1) { + if (NumArgs == 0) { + // If the number of arguments is 0, the we must have an Identifier. IdentifierInfo *II = DecodeIdentifierInfo(Record[Idx++]); assert(II && "DecodeIdentifierInfo returned 0"); KeyIdents.push_back(II); } else { + // For keyword selectors, the Identifier is optional (::: is legal!). for (unsigned ArgIdx = 0; ArgIdx < NumArgs; ++ArgIdx) { IdentifierInfo *II = DecodeIdentifierInfo(Record[Idx++]); - assert(II && "DecodeIdentifierInfo returned 0"); KeyIdents.push_back(II); } } |