aboutsummaryrefslogtreecommitdiff
path: root/lib/libc/stdio
diff options
context:
space:
mode:
authorStefan Eßer <se@FreeBSD.org>2022-01-15 23:30:04 +0000
committerStefan Eßer <se@FreeBSD.org>2022-01-15 23:43:56 +0000
commit10af8e45a89818754b80315539e167ae49599f17 (patch)
tree4a6a1da238ed66980f5cca6c9ccf5ac42953e802 /lib/libc/stdio
parentc8dafefaee00d5741ea141f4f7514811437add06 (diff)
downloadsrc-10af8e45a89818754b80315539e167ae49599f17.tar.gz
src-10af8e45a89818754b80315539e167ae49599f17.zip
Diffstat (limited to 'lib/libc/stdio')
-rw-r--r--lib/libc/stdio/fread.c12
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);