<div dir="ltr">In the same spirit of core.StackAddressEscape, there is an instance of problem involving a lambda that could be detected:<div><br></div><div>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#800080">std</span><span style="color:#000000">::</span>function<span style="color:#000000"><</span><span style="color:#808000">void</span><span style="color:#c0c0c0"> </span><span style="color:#000000">()></span><span style="color:#c0c0c0"> </span><span style="color:#000000">make_func</span><span style="color:#000000">()</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000000">{</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span><span style="color:#800080">QString</span><span style="color:#c0c0c0"> </span><span style="color:#000000">msg</span><span style="color:#000000">(</span><span style="color:#008000">"local</span><span style="color:#c0c0c0"> </span><span style="color:#008000">variable</span><span style="color:#c0c0c0"> </span><span style="color:#008000">invalid</span><span style="color:#c0c0c0"> </span><span style="color:#008000">outside</span><span style="color:#c0c0c0"> </span><span style="color:#008000">of</span><span style="color:#c0c0c0"> </span><span style="color:#008000">make_func"</span><span style="color:#000000">);</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#c0c0c0"> </span><span style="color:#808000">return</span><span style="color:#c0c0c0"> </span><span style="color:#000000">[&]</span><span style="color:#c0c0c0"> </span><span style="color:#000000">()</span><span style="color:#c0c0c0"> </span><span style="color:#000000">{</span><span style="color:#c0c0c0"> </span><span style="color:#000080">qDebug</span><span style="color:#000000">()</span><span style="color:#c0c0c0"> </span><span style="color:#000000"><<</span><span style="color:#c0c0c0"> </span><span style="color:#008000">"lambda</span><span style="color:#c0c0c0"> </span><span style="color:#008000">invalid"</span><span style="color:#c0c0c0"> </span><span style="color:#000000"><<</span><span style="color:#c0c0c0"> </span><span style="color:#000000">msg</span><span style="color:#000000">;</span><span style="color:#c0c0c0"> </span><span style="color:#000000">};</span></pre>
<pre style="margin-top:0px;margin-bottom:0px"><span style="color:#000000">}</span></pre>
<br><br>The function returns a lambda holding a reference to a variable on the stack. Invoking the lambda is likely to trigger SIGSEGV. Currently, the check returns this:<br></div><div><br></div><div><div> scan-build: No bugs found.</div></div><div><br></div><div>I just thought it would be useful to share this case.</div><div><br></div><div>Cheers,</div><div><br></div><div>Francis</div></div>