Charusso added a comment.

In D64680#1584076 <https://reviews.llvm.org/D64680#1584076>, @NoQ wrote:

> Change of plans: let's suppress the warning when our `free()` is done within 
> the function that has `__isl_take` in its definition. So, like, ascend the 
> chain of location contexts and check your callers when you're about to mark 
> the pointer as released. If any of the callers contain `__isl_take`, mark it 
> as escaped instead.


I think if the `__isl_*` macro is in use it should be used in the immediate 
StackFrame. Btw: some magic happened and with the previous approach we did not 
suppress some reports, now we do. Thanks!



================
Comment at: clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp:56-58
+    // If this checker does not model the allocation.
+    DoNothing,
+    // Reference to allocated memory.
----------------
NoQ wrote:
> We already have `Escaped`, it's the same thing in practice.
It is more strict than `Escaped`, also it made for the purpose of 
`PSK_EscapeOther` to force out we lost the entire pointer and do not make false 
warnings of use-after-free.


================
Comment at: clang/lib/StaticAnalyzer/Checkers/MallocChecker.cpp:2937-2942
+  const Stmt *S = PathDiagnosticLocation::getStmt(N);
+
+  if (RS && RS->isDoNothing()) {
+    BR.markInvalid(getTag(), S);
+    return nullptr;
+  }
----------------
NoQ wrote:
> {F9551724}
I wanted to make it bulletproof, but your meme-proof is way more better.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D64680/new/

https://reviews.llvm.org/D64680



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to