r189460 - clang-format: Fix segfault in 'incomplete' macros.

Sean Silva silvas at purdue.edu
Thu Aug 29 08:42:28 PDT 2013


Thanks for all these bug fixes!

-- Sean Silva


On Wed, Aug 28, 2013 at 5:17 AM, Daniel Jasper <djasper at google.com> wrote:

> Author: djasper
> Date: Wed Aug 28 04:17:37 2013
> New Revision: 189460
>
> URL: http://llvm.org/viewvc/llvm-project?rev=189460&view=rev
> Log:
> clang-format: Fix segfault in 'incomplete' macros.
>
> The code leading to a segfault was:
>   #pragma omp threadprivate(y)), // long comment leading to a line break
>
> This fixes llvm.org/PR16513.
>
> Modified:
>     cfe/trunk/lib/Format/ContinuationIndenter.cpp
>     cfe/trunk/unittests/Format/FormatTest.cpp
>
> Modified: cfe/trunk/lib/Format/ContinuationIndenter.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/ContinuationIndenter.cpp?rev=189460&r1=189459&r2=189460&view=diff
>
> ==============================================================================
> --- cfe/trunk/lib/Format/ContinuationIndenter.cpp (original)
> +++ cfe/trunk/lib/Format/ContinuationIndenter.cpp Wed Aug 28 04:17:37 2013
> @@ -536,9 +536,10 @@ unsigned ContinuationIndenter::moveState
>
>    // If we encounter a closing ), ], } or >, we can remove a level from
> our
>    // stacks.
> -  if (Current.isOneOf(tok::r_paren, tok::r_square) ||
> -      (Current.is(tok::r_brace) && State.NextToken != Line.First) ||
> -      State.NextToken->Type == TT_TemplateCloser) {
> +  if (State.Stack.size() > 1 &&
> +      (Current.isOneOf(tok::r_paren, tok::r_square) ||
> +       (Current.is(tok::r_brace) && State.NextToken != Line.First) ||
> +       State.NextToken->Type == TT_TemplateCloser)) {
>      State.Stack.pop_back();
>      --State.ParenLevel;
>    }
>
> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=189460&r1=189459&r2=189460&view=diff
>
> ==============================================================================
> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
> +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Aug 28 04:17:37 2013
> @@ -1942,6 +1942,9 @@ TEST_F(FormatTest, MacroDefinitionsWithI
>    verifyFormat("#define A template <typename T>");
>    verifyFormat("#define STR(x) #x\n"
>                 "f(STR(this_is_a_string_literal{));");
> +  verifyFormat("#pragma omp threadprivate( \\\n"
> +               "    y)), // expected-warning",
> +               getLLVMStyleWithColumns(28));
>  }
>
>  TEST_F(FormatTest, MacrosWithoutTrailingSemicolon) {
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20130829/59492c2f/attachment.html>


More information about the cfe-commits mailing list