diff --git a/src/libcore/io.rs b/src/libcore/io.rs index 460fd60d4c56b..64b69a7928b5f 100644 --- a/src/libcore/io.rs +++ b/src/libcore/io.rs @@ -868,9 +868,19 @@ impl Reader for *libc::FILE { assert!(buf_len >= len); let count = libc::fread(buf_p as *mut c_void, 1u as size_t, - len as size_t, *self); + len as size_t, *self) as uint; + if count < len { + match libc::ferror(*self) { + 0 => (), + _ => { + error!("error reading buffer"); + error!("%s", os::last_os_error()); + fail!(); + } + } + } - count as uint + count } } }