Szelethus added a comment.

In D82845#2121940 <https://reviews.llvm.org/D82845#2121940>, @balazske wrote:

> Why does this not work?
>  I get only warning for the first resource leak (in the test `f_leak_2`). How 
> to fix this?


First off, are two errors detected by the checker? You could check this with 
`debug.ViewExplodedGraph` + `clang/tools/analyzer/exploded-graph-rewriter.py`.

I do suspect though that this is a uniqueing issue. Just out of curiosity, what 
would happen is you dump the leaked stream symbol into the warning message? (or 
whatever, just so that two distinct warning messages are emitted)



================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:969
+  // Do not warn for non-closed stream at program exit.
+  if (Pred && Pred->getCFGBlock() && Pred->getCFGBlock()->hasNoReturnElement())
+    return Pred;
----------------
It is a realistic worry that either the predecessor exploded node or the 
CFGBlock is null? Could we assert this instead?


================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:971
-
-    ExplodedNode *N = C.generateErrorNode();
-    if (!N)
----------------
Ah, I see, we made it fatal accidentally.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D82845



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

Reply via email to