]> granicus.if.org Git - clang/commitdiff
Fix bug discovered by valgrind.
authorDaniel Jasper <djasper@google.com>
Mon, 21 Jan 2013 14:18:28 +0000 (14:18 +0000)
committerDaniel Jasper <djasper@google.com>
Mon, 21 Jan 2013 14:18:28 +0000 (14:18 +0000)
When trying to merge lines, we should not touch lines that are invalid,
as we don't know how long they might be.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173043 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Format/Format.cpp

index d234006a25a5e861fd9e161991a94da5112a37c9..a4de062fbfd8e4ff300a9fd19ebe860e76f05e5f 100644 (file)
@@ -1716,7 +1716,7 @@ private:
       return;
     Limit -= I->Last->TotalLength + 1; // One space.
 
-    if (I + 1 == E)
+    if (I + 1 == E || (I + 1)->Type == LT_Invalid)
       return;
 
     if (I->Last->is(tok::l_brace)) {
@@ -1770,7 +1770,8 @@ private:
                         std::vector<AnnotatedLine>::iterator E,
                         unsigned Limit){
     // Check that we still have three lines and they fit into the limit.
-    if (I + 2 == E || !nextTwoLinesFitInto(I, Limit))
+    if (I + 2 == E || (I + 2)->Type == LT_Invalid ||
+        !nextTwoLinesFitInto(I, Limit))
       return;
 
     // First, check that the current line allows merging. This is the case if