diff --git a/src/header/stdio/mod.rs b/src/header/stdio/mod.rs index e97aebdb5a740d9b450db69f3030bb0f1560f0de..8ed46f147bb1e7aeba5f85ab412561a9561e9beb 100644 --- a/src/header/stdio/mod.rs +++ b/src/header/stdio/mod.rs @@ -251,8 +251,24 @@ pub unsafe extern "C" fn ferror(stream: *mut FILE) -> c_int { /// itself. #[no_mangle] pub unsafe extern "C" fn fflush(stream: *mut FILE) -> c_int { - let mut stream = (*stream).lock(); - stream.flush().is_err() as c_int + if stream.is_null() { + //TODO: flush all files! + + if fflush(stdout) != 0 { + return EOF; + } + + if fflush(stderr) != 0 { + return EOF; + } + } else { + let mut stream = (*stream).lock(); + if stream.flush().is_err() { + return EOF; + } + } + + 0 } /// Get a single char from a stream