diff options
author | Stefan Eßer <se@FreeBSD.org> | 2022-01-15 23:30:04 +0000 |
---|---|---|
committer | Stefan Eßer <se@FreeBSD.org> | 2022-01-15 23:43:56 +0000 |
commit | 10af8e45a89818754b80315539e167ae49599f17 (patch) | |
tree | 4a6a1da238ed66980f5cca6c9ccf5ac42953e802 /lib/libc/stdio | |
parent | c8dafefaee00d5741ea141f4f7514811437add06 (diff) | |
download | src-10af8e45a89818754b80315539e167ae49599f17.tar.gz src-10af8e45a89818754b80315539e167ae49599f17.zip |
Diffstat (limited to 'lib/libc/stdio')
-rw-r--r-- | lib/libc/stdio/fread.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/lib/libc/stdio/fread.c b/lib/libc/stdio/fread.c index 11f8d13f0caf..cafe86fe7961 100644 --- a/lib/libc/stdio/fread.c +++ b/lib/libc/stdio/fread.c @@ -129,11 +129,13 @@ __fread(void * __restrict buf, size_t size, size_t count, FILE * __restrict fp) } while (resid > (r = fp->_r)) { - (void)memcpy((void *)p, (void *)fp->_p, (size_t)r); - fp->_p += r; - /* fp->_r = 0 ... done in __srefill */ - p += r; - resid -= r; + if (r != 0) { + (void)memcpy((void *)p, (void *)fp->_p, (size_t)r); + fp->_p += r; + /* fp->_r = 0 ... done in __srefill */ + p += r; + resid -= r; + } if (__srefill(fp)) { /* no more input: return partial result */ return ((total - resid) / size); |