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