Procházet zdrojové kódy

Fix panic in fread

Jeremy Soller před 6 roky
rodič
revize
e7896f6c48
1 změnil soubory, kde provedl 6 přidání a 2 odebrání
  1. 6 2
      src/header/stdio/mod.rs

+ 6 - 2
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..]) {