From: Alan T. DeKok Date: Fri, 10 Nov 2017 20:12:15 +0000 (-0500) Subject: we're at EOF if we asked for N bytes, and got Mread_offset = lseek(inst->fd, 0, SEEK_CUR); - inst->eof = (data_size == 0) || (inst->read_offset == inst->file_size); + inst->eof = (data_size == 0) || (inst->read_offset == inst->file_size) || ((size_t) data_size < room); end = partial + data_size; } else {