fseek on a position beyond EOF does not trigger EOF using feof, how come?
I'm reading data from a file to memory that is opened with: FILE *f = fopen(path, "rb"); Before I start copying bytes from the file I seek to a start position using: /** * Goes to the given position of the given file. * * - Returns 0 on success * - Returns -1 on EOF * - Returns -2 if an error occured, see errno for error code * - Returns -3 if none of the above applies. This should never happen! */ static int8_t goto_pos(FILE *f, uint64_t pos) { int err = fseek(f, pos, SEEK_SET); if (err != 0) { if (feof(f) != 0) return -1; if (ferror(f) != 0) return -2; return -3; } return 0; } The problem is