From 1d21b22155242f604ab8e4a7b4ed92a422f61266 Mon Sep 17 00:00:00 2001 From: Sergei Golubchik Date: Wed, 15 Jun 2016 13:53:19 +0200 Subject: [PATCH] MDEV-10001 my_b_seek() may not work correctly after my_b_read() hits EOF applied the patch from David Gow --- mysys/mf_iocache.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/mysys/mf_iocache.c b/mysys/mf_iocache.c index a3cbaff68b0..06a76c68477 100644 --- a/mysys/mf_iocache.c +++ b/mysys/mf_iocache.c @@ -507,6 +507,7 @@ int _my_b_read(register IO_CACHE *info, uchar *Buffer, size_t Count) { /* End of file. Return, what we did copy from the buffer. */ info->error= (int) left_length; + info->seek_not_done=1; DBUG_RETURN(1); } /* @@ -524,6 +525,7 @@ int _my_b_read(register IO_CACHE *info, uchar *Buffer, size_t Count) */ info->error= (read_length == (size_t) -1 ? -1 : (int) (read_length+left_length)); + info->seek_not_done=1; DBUG_RETURN(1); } Count-=length; @@ -572,6 +574,7 @@ int _my_b_read(register IO_CACHE *info, uchar *Buffer, size_t Count) /* For a read error, return -1, otherwise, what we got in total. */ info->error= length == (size_t) -1 ? -1 : (int) (length+left_length); info->read_pos=info->read_end=info->buffer; + info->seek_not_done=1; DBUG_RETURN(1); } /*