Flush to stdout from FileDescriptor::write for Stdout
Also, remove unnecessary `-Zmiri-disable-isolation` in test
This commit is contained in:
parent
bea7113eb8
commit
bdef57ea45
@ -1,5 +1,3 @@
|
||||
use std::io::{self, Write};
|
||||
|
||||
use log::trace;
|
||||
|
||||
use rustc_middle::mir;
|
||||
@ -76,9 +74,6 @@ pub trait EvalContextExt<'mir, 'tcx: 'mir>: crate::MiriEvalContextExt<'mir, 'tcx
|
||||
let count = this.read_scalar(n)?.to_machine_usize(this)?;
|
||||
trace!("Called write({:?}, {:?}, {:?})", fd, buf, count);
|
||||
let result = this.write(fd, buf, count)?;
|
||||
if fd == 1 {
|
||||
io::stdout().flush().unwrap();
|
||||
}
|
||||
// Now, `result` is the value we return back to the program.
|
||||
this.write_scalar(Scalar::from_machine_isize(result, this), dest)?;
|
||||
}
|
||||
|
@ -76,7 +76,15 @@ impl<'tcx> FileDescriptor<'tcx> for io::Stdout {
|
||||
}
|
||||
|
||||
fn write(&mut self, bytes: &[u8]) -> InterpResult<'tcx, io::Result<usize>> {
|
||||
Ok(Write::write(self, bytes))
|
||||
let result = Write::write(self, bytes);
|
||||
// Stdout is buffered, flush to make sure it appears on the
|
||||
// screen. This is the write() syscall of the interpreted
|
||||
// program, we want it to correspond to a write() syscall on
|
||||
// the host -- there is no good in adding extra buffering
|
||||
// here.
|
||||
io::stdout().flush().unwrap();
|
||||
|
||||
Ok(result)
|
||||
}
|
||||
|
||||
fn seek(&mut self, _offset: SeekFrom) -> InterpResult<'tcx, io::Result<u64>> {
|
||||
|
@ -1,4 +1,3 @@
|
||||
// compile-flags: -Zmiri-disable-isolation
|
||||
// ignore-windows: No libc on Windows
|
||||
|
||||
#![feature(rustc_private)]
|
||||
|
Loading…
x
Reference in New Issue
Block a user