diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index b17df3da260..c53a9585cfa 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -337,7 +337,11 @@ my_bool reinit_io_cache(IO_CACHE *info, enum cache_type type, if (info->type == READ_CACHE) { info->write_end=info->write_buffer+info->buffer_length; - info->seek_not_done=1; + /* + Trigger a new seek only if we have a valid + file handle. + */ + info->seek_not_done= (info->file >= 0); } info->end_of_file = ~(my_off_t) 0; } diff --git a/mysys/my_seek.c b/mysys/my_seek.c index a9ae68cd5f0..f03a932e696 100644 --- a/mysys/my_seek.c +++ b/mysys/my_seek.c @@ -51,6 +51,11 @@ my_off_t my_seek(File fd, my_off_t pos, int whence, whence, MyFlags)); DBUG_ASSERT(pos != MY_FILEPOS_ERROR); /* safety check */ + /* + Make sure we are using a valid file descriptor + */ + DBUG_ASSERT(fd >= 0); + newpos=lseek(fd, pos, whence); if (newpos == (os_off_t) -1) {