fclose builtin not modeled as file resource
- Dominant language
- OCaml
- Stars
- 15.7k
- Forks
- 2.1k
- Avg merge
- 19h 36m
- Merged PRs (30d)
- 13
Description
I noticed that the resource predicate for `fclose` matches `Rmemory Mnew` instead of `Rfile` as expected (PredSymb.re). `fclose` is modeled as `free`, but no file attribute is set (compare https://github.com/facebook/infer/blob/master/infer/models/c/src/libc_basic.c#L485 and `fopen` https://github.com/facebook/infer/blob/master/infer/models/c/src/libc_basic.c#L445).
Is there a particular reason for this? If I set the file attribute for `fclose`, the OCaml type matches the `Rfile` that I expect. I.e.,
```
int fclose(FILE* stream) {
int n;
free(stream);
__set_file_attribute(stream);
n = __infer_nondet_int();
if (n > 0)
return 0;
else
return EOF;
}
```
Same question for the `close` model.
Contributor guide
Assessment
This issue has not been assessed yet.