From e7896f6c48cf095d81e6f646bf10230aae93b93f Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Sat, 29 Dec 2018 10:02:36 -0700 Subject: [PATCH] Fix panic in fread --- src/header/stdio/mod.rs | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/header/stdio/mod.rs b/src/header/stdio/mod.rs index 4a17e1d7f7..7e5adbd892 100644 --- a/src/header/stdio/mod.rs +++ b/src/header/stdio/mod.rs @@ -422,11 +422,15 @@ pub unsafe extern "C" fn fputs(s: *const c_char, stream: *mut FILE) -> c_int { pub unsafe extern "C" fn fread( ptr: *mut c_void, size: size_t, - count: size_t, + nitems: size_t, stream: *mut FILE, ) -> size_t { + if size == 0 || count == 0 { + return 0; + } + let mut stream = (*stream).lock(); - let buf = slice::from_raw_parts_mut(ptr as *mut u8, size as usize * count as usize); + let buf = slice::from_raw_parts_mut(ptr as *mut u8, size as usize * nitems as usize); let mut read = 0; while read < buf.len() { match stream.read(&mut buf[read..]) {