diff options
| author | Manish Goregaokar <manishsmail@gmail.com> | 2016-02-26 15:12:18 +0530 |
|---|---|---|
| committer | Manish Goregaokar <manishsmail@gmail.com> | 2016-02-26 17:03:42 +0530 |
| commit | acea6fc1cb5edf5211ade6ad4a79b119879eab82 (patch) | |
| tree | 5fa51dde12beef1d77292b205917548d7a6f6f8b /src/libstd | |
| parent | 263e7228ca04672f9e281f241e8e389c6f5c80f9 (diff) | |
| parent | 6cfafad3c56736a62e1043a8d01f7f2c74384008 (diff) | |
| download | rust-acea6fc1cb5edf5211ade6ad4a79b119879eab82.tar.gz rust-acea6fc1cb5edf5211ade6ad4a79b119879eab82.zip | |
Rollup merge of #31904 - bluss:writer-formatter-error, r=alexcrichton
Make sure formatter errors are emitted by the default Write::write_fmt Previously, if an error was returned from the formatter that did not originate in an underlying writer error, Write::write_fmt would return successfully even if the formatting did not complete (was interrupted by an `fmt::Error` return). Now we choose to emit an io::Error with kind Other for formatter errors. Since this may reveal error returns from `write!()` and similar that previously passed silently, it's a kind of a [breaking-change]. Fixes #31879
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/io/mod.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs index 6bdfdcd364a..61334f30924 100644 --- a/src/libstd/io/mod.rs +++ b/src/libstd/io/mod.rs @@ -1055,7 +1055,14 @@ pub trait Write { let mut output = Adaptor { inner: self, error: Ok(()) }; match fmt::write(&mut output, fmt) { Ok(()) => Ok(()), - Err(..) => output.error + Err(..) => { + // check if the error came from the underlying `Write` or not + if output.error.is_err() { + output.error + } else { + Err(Error::new(ErrorKind::Other, "formatter error")) + } + } } } |
