The analyzer detected a situation: a file was opened in one mode, but the called function expects it to be in the other.
For example, a file was opened in write-only mode, but it is used for reading:
bool read_file(void *ptr, size_t len) { FILE *file = fopen("file.txt", "wb"); // <= if (file != NULL) { bool ok = fread(ptr, len, 1, file) == 1; fclose(file); return ok; } return false; }
Most likely it's a typo. Use the correct mode to fix it:
bool read_file(void *ptr, size_t len) { FILE *file = fopen("file.txt", "rb"); // <= if (file != NULL) { bool ok = fread(ptr, len, 1, file) == 1; fclose(file); return ok; } return false; }
There also may be a situation when the fprintf function writes data into a closed file:
void do_something_with_file(FILE* file) { // .... fclose(file); } void foo(void) { FILE *file = fopen("file.txt", "w"); if (file != NULL) { do_something_with_file(file); fprintf(file, "writing additional data\n"); } }
You should check the correctness of such use of resources in the program and fix the problem.
You can look at examples of errors detected by the V1075 diagnostic. |