================
@@ -1404,6 +1486,47 @@ void StreamChecker::evalFeofFerror(const FnDescription 
*Desc,
   }
 }
 
+void StreamChecker::evalFileno(const FnDescription *Desc, const CallEvent 
&Call,
+                               CheckerContext &C) const {
+  // Fileno should fail only if the passed pointer is invalid.
+  // Some of the preconditions are checked already in preDefault.
+  // Here we can assume that the operation does not fail.
+  // An added failure case causes many unexpected warnings because a file 
number
+  // becomes -1 that is not expected by the program.
+  // The stream error states are not modified by 'fileno', and not the 'errno'.
+  // (To ensure that errno is not changed, this evalCall is needed to not
+  // invalidate 'errno' like in a default case.)
----------------
NagyDonat wrote:

```suggestion
  // Here we assume that the operation does not fail, because we introduced a
  // separate branch where fileno() returns -1, then it would cause many
  // unexpected and unwanted warnings in situations where fileno() is called
  // on vaild streams.
  // The stream error states are not modified by 'fileno', and 'errno' is also
  // left unchanged (so this evalCall does not invalidate it).
```

I felt that this comment is a bit difficult to understand and composed a 
reworded alternative. Of course, this is a very subjective matter and English 
isn't my first language, so feel free to bikeshed this and/or override my 
suggestions.

https://github.com/llvm/llvm-project/pull/81842
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to