]> granicus.if.org Git - clang/commit
clang-format: Properly reset nested AnnotatedLine structure.
authorDaniel Jasper <djasper@google.com>
Thu, 24 Oct 2013 15:23:11 +0000 (15:23 +0000)
committerDaniel Jasper <djasper@google.com>
Thu, 24 Oct 2013 15:23:11 +0000 (15:23 +0000)
commit852bce4ba3c59669a80d4755f07782a3c28c606b
tree75b0d599471cc954d85613c12108160f2086d234
parentde2204b56096e2336d19b1feae8b1be99dfb49fa
clang-format: Properly reset nested AnnotatedLine structure.

This fixes llvm.org/PR17682.

Without this patch, the following code leads to invalid reads/writes:
  DEBUG({
    return aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa +
           aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa;
  });
  #if a
  #else
  #endif

Because of the #if-#else structure, the code is formatted and annotated
twice and becauce of the nested block, the annotated lines form a
hierarchical structure. This structure was not properly reset between
runs.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@193352 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Format/TokenAnnotator.h
unittests/Format/FormatTest.cpp