r200381 - Fix crash on unmatched #endif's.

Nico Weber thakis at chromium.org
Wed Jan 29 09:10:47 PST 2014


On Wed, Jan 29, 2014 at 8:47 AM, David Blaikie <dblaikie at gmail.com> wrote:

>
>
>
> On Wed, Jan 29, 2014 at 12:49 AM, Manuel Klimek <klimek at google.com> wrote:
>
>> Author: klimek
>> Date: Wed Jan 29 02:49:02 2014
>> New Revision: 200381
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=200381&view=rev
>> Log:
>> Fix crash on unmatched #endif's.
>>
>> The following snippet would crash:
>>   #endif
>>   #if A
>>
>
> Any reason this wasn't contributed as a test case?
>

Isn't this included as test case? (I marked it "**" below)


>
>
>>
>> Modified:
>>     cfe/trunk/lib/Format/UnwrappedLineParser.cpp
>>     cfe/trunk/unittests/Format/FormatTest.cpp
>>
>> Modified: cfe/trunk/lib/Format/UnwrappedLineParser.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Format/UnwrappedLineParser.cpp?rev=200381&r1=200380&r2=200381&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Format/UnwrappedLineParser.cpp (original)
>> +++ cfe/trunk/lib/Format/UnwrappedLineParser.cpp Wed Jan 29 02:49:02 2014
>> @@ -509,7 +509,9 @@ void UnwrappedLineParser::parsePPEndIf()
>>        PPLevelBranchCount[PPBranchLevel] = PPChainBranchIndex.top() + 1;
>>      }
>>    }
>> -  --PPBranchLevel;
>> +  // Guard against #endif's without #if.
>> +  if (PPBranchLevel > 0)
>> +    --PPBranchLevel;
>>    if (!PPChainBranchIndex.empty())
>>      PPChainBranchIndex.pop();
>>    if (!PPStack.empty())
>>
>> Modified: cfe/trunk/unittests/Format/FormatTest.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/unittests/Format/FormatTest.cpp?rev=200381&r1=200380&r2=200381&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/unittests/Format/FormatTest.cpp (original)
>> +++ cfe/trunk/unittests/Format/FormatTest.cpp Wed Jan 29 02:49:02 2014
>> @@ -2427,6 +2427,11 @@ TEST_F(FormatTest, LayoutStatementsAroun
>>                 "#endif");
>>  }
>>
>> +TEST_F(FormatTest, GraciouslyHandleIncorrectPreprocessorConditions) {
>> +  verifyFormat("#endif\n"
>> +               "#if B");
>> +}
>>
>
**


> +
>>  TEST_F(FormatTest, FormatsJoinedLinesOnSubsequentRuns) {
>>    FormatStyle SingleLine = getLLVMStyle();
>>    SingleLine.AllowShortIfStatementsOnASingleLine = true;
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>>
>
>
> _______________________________________________
> 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/20140129/cf32ce3c/attachment.html>


More information about the cfe-commits mailing list