mirror of https://github.com/microsoft/clang.git
Lex: Don't crash if both conflict markers are on the same line
We would check if the terminator marker is on a newline. However, the logic would end up out-of-bounds if the terminator marker immediately follows the start marker. This fixes PR21820. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@224210 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ba91227328
commit
7ac2ac0e70
|
@ -2588,8 +2588,8 @@ static const char *FindConflictEnd(const char *CurPtr, const char *BufferEnd,
|
|||
size_t Pos = RestOfBuffer.find(Terminator);
|
||||
while (Pos != StringRef::npos) {
|
||||
// Must occur at start of line.
|
||||
if (RestOfBuffer[Pos-1] != '\r' &&
|
||||
RestOfBuffer[Pos-1] != '\n') {
|
||||
if (Pos == 0 ||
|
||||
(RestOfBuffer[Pos - 1] != '\r' && RestOfBuffer[Pos - 1] != '\n')) {
|
||||
RestOfBuffer = RestOfBuffer.substr(Pos+TermLen);
|
||||
Pos = RestOfBuffer.find(Terminator);
|
||||
continue;
|
||||
|
|
|
@ -36,3 +36,5 @@ int foo() {
|
|||
y a = x;
|
||||
return x + a - z;
|
||||
}
|
||||
|
||||
<<<<<<<>>>>>>> // expected-error {{expected identifier}}
|
||||
|
|
Loading…
Reference in New Issue