forked from OSchip/llvm-project
Support operator keywords used in Windows SDK(fix ubsan)
UBSan found an issue with a nullptr being assigned to a reference. This was because a following function went back and checked the identifier in the CPPOperatorName case. This patch corrects that location with the original logic as well. llvm-svn: 305128
This commit is contained in:
parent
21fde385fa
commit
3cf69bce69
|
@ -713,7 +713,9 @@ bool Preprocessor::HandleIdentifier(Token &Identifier) {
|
||||||
// C++ 2.11p2: If this is an alternative representation of a C++ operator,
|
// C++ 2.11p2: If this is an alternative representation of a C++ operator,
|
||||||
// then we act as if it is the actual operator and not the textual
|
// then we act as if it is the actual operator and not the textual
|
||||||
// representation of it.
|
// representation of it.
|
||||||
if (II.isCPlusPlusOperatorKeyword())
|
if (II.isCPlusPlusOperatorKeyword() &&
|
||||||
|
!(getLangOpts().MSVCCompat &&
|
||||||
|
getSourceManager().isInSystemHeader(Identifier.getLocation())))
|
||||||
Identifier.setIdentifierInfo(nullptr);
|
Identifier.setIdentifierInfo(nullptr);
|
||||||
|
|
||||||
// If this is an extension token, diagnose its use.
|
// If this is an extension token, diagnose its use.
|
||||||
|
|
Loading…
Reference in New Issue