<div dir="ltr"><div><div><div><div><div><div><div><div>Hi, sorry if this question is answered somewhere else, but I couldn't find anything about it. I've read the checker development manual and looking at past mailing list emails. My question is about how the analysis framework determines how a pointer escapes.<br><br></div>I have the following code:<br>class A {<br></div>  int y;<br></div>public:<br></div>  void getY(int * i) const {<br></div>    *i = y;<br>  }<br>};<br><br></div>Assuming that the analyzer uses getY as the top level function, I have a bind<br>to: &SymRegion{reg_$2<i>} (the region, or pointer, represented by i)<br></div>from: reg_$1<SymRegion{reg_$0<this>}->y> (the value of y)<br><br><br></div><div>Directly after this bind, the analyse says there's a pointer escape<br></div><div>symbol: reg_$1<SymRegion{reg_$0<this>}->y><br><br></div><div>This doesn't make sense to me, especially when the value that escapes is of type int.<br></div><div>The pointer to y didn't escape, the value was merely copied into *i. Am I missing something obvious? Why does it think the field y escaped?<br><br></div><div>Thanks.<br></div></div>