r324308 - Fix crash on invalid.
Hans Wennborg via cfe-commits
cfe-commits at lists.llvm.org
Thu Feb 22 03:27:37 PST 2018
Seems safe. Merged in r325766.
On Thu, Feb 22, 2018 at 1:15 AM, Richard Trieu <rtrieu at google.com> wrote:
> Hi Hans,
>
> If there's still time for rc3, I'd like to get this crash fix in. This adds
> a null check to prevent a crash on invalid.
>
> Richard
>
> On Mon, Feb 5, 2018 at 6:58 PM, Richard Trieu via cfe-commits
> <cfe-commits at lists.llvm.org> wrote:
>>
>> Author: rtrieu
>> Date: Mon Feb 5 18:58:21 2018
>> New Revision: 324308
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=324308&view=rev
>> Log:
>> Fix crash on invalid.
>>
>> Don't call a method when the pointer is null.
>>
>> Modified:
>> cfe/trunk/lib/Sema/SemaExpr.cpp
>> cfe/trunk/test/SemaCXX/lambda-expressions.cpp
>>
>> Modified: cfe/trunk/lib/Sema/SemaExpr.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaExpr.cpp?rev=324308&r1=324307&r2=324308&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaExpr.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaExpr.cpp Mon Feb 5 18:58:21 2018
>> @@ -14958,7 +14958,8 @@ static void DoMarkVarDeclReferenced(Sema
>> if (RefersToEnclosingScope) {
>> LambdaScopeInfo *const LSI =
>> SemaRef.getCurLambda(/*IgnoreNonLambdaCapturingScope=*/true);
>> - if (LSI && !LSI->CallOperator->Encloses(Var->getDeclContext())) {
>> + if (LSI && (!LSI->CallOperator ||
>> + !LSI->CallOperator->Encloses(Var->getDeclContext()))) {
>> // If a variable could potentially be odr-used, defer marking it
>> so
>> // until we finish analyzing the full expression for any
>> // lvalue-to-rvalue
>>
>> Modified: cfe/trunk/test/SemaCXX/lambda-expressions.cpp
>> URL:
>> http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/lambda-expressions.cpp?rev=324308&r1=324307&r2=324308&view=diff
>>
>> ==============================================================================
>> --- cfe/trunk/test/SemaCXX/lambda-expressions.cpp (original)
>> +++ cfe/trunk/test/SemaCXX/lambda-expressions.cpp Mon Feb 5 18:58:21 2018
>> @@ -608,3 +608,18 @@ namespace ConversionOperatorDoesNotHaveD
>> // This used to crash in return type deduction for the conversion
>> opreator.
>> struct A { int n; void f() { +[](decltype(n)) {}; } };
>> }
>> +
>> +namespace TypoCorrection {
>> +template <typename T> struct X {};
>> +// expected-note at -1 {{template parameter is declared here}}
>> +
>> +template <typename T>
>> +void Run(const int& points) {
>> +// expected-note at -1 {{'points' declared here}}
>> + auto outer_lambda = []() {
>> + auto inner_lambda = [](const X<Points>&) {};
>> + // expected-error at -1 {{use of undeclared identifier 'Points'; did you
>> mean 'points'?}}
>> + // expected-error at -2 {{template argument for template type parameter
>> must be a type}}
>> + };
>> +}
>> +}
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>
>
More information about the cfe-commits
mailing list