clang-format: Fix crasher when splitting incomplete escape sequences.

llvm-svn: 226698
This commit is contained in:
Daniel Jasper 2015-01-21 19:50:35 +00:00
parent 97a01f0161
commit e4b48c635c
2 changed files with 7 additions and 1 deletions

View File

@ -106,7 +106,7 @@ getStringSplit(StringRef Text, unsigned UsedColumns, unsigned ColumnLimit,
Text.substr(0, Advance), UsedColumns + Chars, TabWidth, Encoding);
}
if (Chars > MaxSplit || Text.size() == Advance)
if (Chars > MaxSplit || Text.size() <= Advance)
break;
if (IsBlank(Text[0]))

View File

@ -7444,6 +7444,12 @@ TEST_F(FormatTest, BreaksWideAndNSStringLiterals) {
EXPECT_EQ("@\"NSString \"\n"
"@\"literal\";",
format("@\"NSString literal\";", getGoogleStyleWithColumns(19)));
// This input makes clang-format try to split the incomplete unicode escape
// sequence, which used to lead to a crasher.
verifyNoCrash(
"aaaaaaaaaaaaaaaaaaaa = L\"\\udff\"'; // aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
getLLVMStyleWithColumns(60));
}
TEST_F(FormatTest, DoesNotBreakRawStringLiterals) {