From fb320c09da0ca94debd422ddb753a5f65754e7a4 Mon Sep 17 00:00:00 2001 From: Roman Fomin Date: Thu, 4 May 2023 21:03:14 +0700 Subject: [PATCH] memio: successful call of the mem_fseek() clears eof, init eof on open stream --- src/memio.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/memio.c b/src/memio.c index a6ccbf0c..f1a7fc9e 100644 --- a/src/memio.c +++ b/src/memio.c @@ -49,6 +49,7 @@ MEMFILE *mem_fopen_read(void *buf, size_t buflen) file->buf = (unsigned char *) buf; file->buflen = buflen; file->position = 0; + file->eof = false; file->mode = MODE_READ; return file; @@ -67,9 +68,7 @@ size_t mem_fread(void *buf, size_t size, size_t nmemb, MEMFILE *stream) return -1; } - stream->eof = false; - - if (read_eof && stream->position >= stream->buflen) + if (read_eof) { stream->eof = true; } @@ -108,6 +107,7 @@ MEMFILE *mem_fopen_write(void) file->buf = Z_Malloc(file->alloced, PU_STATIC, 0); file->buflen = 0; file->position = 0; + file->eof = false; file->mode = MODE_WRITE; return file; @@ -258,6 +258,7 @@ int mem_fseek(MEMFILE *stream, signed long position, mem_rel_t whence) if (newpos <= stream->buflen) { stream->position = newpos; + stream->eof = false; return 0; } else