Szelethus added a comment.

Riiiight I think I finally get it. You don't want to state split on `feof()` 
and `ferror()`, but rather on the stream operations! This is why you only want 
to tell the analyzer what the return value of these functions are going to be, 
because the state of the stream should be set by the time we reach these 
functions, right?

How about untracked streams? What if we call `feof()` on a stream we got from a 
parameter, wouldn't that suggest that the stream is probably non-null and could 
either be EOF or non-EOF?



================
Comment at: clang/lib/StaticAnalyzer/Checkers/StreamChecker.cpp:88
 struct FnDescription;
 using FnCheck = std::function<void(const StreamChecker *, const FnDescription 
*,
                                    const CallEvent &, CheckerContext &)>;
----------------
balazske wrote:
> NoQ wrote:
> > balazske wrote:
> > > NoQ wrote:
> > > > `llvm::function_ref`?
> > > `function_ref`'s documentation says:
> > > > This class does not own the callable, so it is not in general safe to 
> > > > store a function_ref.
> > > The `FnDescription` stores these functions so it is not safe to use 
> > > `llvm::function_ref`?
> > > 
> > > 
> > > 
> > I think you're using it only for global function pointers, no?
> Probably can work but I tried it and got compile errors.
It doesn't matter a whole lot, we could leave this as-is :)


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D75682



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

Reply via email to