summary refs log tree commit diff
path: root/src/libstd
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-06-01 23:12:52 +0000
committerbors <bors@rust-lang.org>2015-06-01 23:12:52 +0000
commit613e57b448c88591b6076a8cea9799f1f3876687 (patch)
tree5299d5ba0c39781e9a6a74a3d1e67cf830cad088 /src/libstd
parenta49ae5bd4378cb47fd5cfdcd0c31e04d55373696 (diff)
parent0ad019f4e86d68682dacb90f1d0d03cddba31bac (diff)
downloadrust-613e57b448c88591b6076a8cea9799f1f3876687.tar.gz
rust-613e57b448c88591b6076a8cea9799f1f3876687.zip
Auto merge of #25246 - mzabaluev:io-invalid-data, r=alexcrichton
This takes the cases from `InvalidInput` where a data format error
was encountered. This is different from the documented semantics
of `InvalidInput`, which more likely indicate a programming error.

Fixes rust-lang/rfcs#906
Diffstat (limited to 'src/libstd')
-rw-r--r--src/libstd/io/error.rs7
-rw-r--r--src/libstd/io/mod.rs2
-rw-r--r--src/libstd/sys/windows/stdio.rs2
3 files changed, 9 insertions, 2 deletions
diff --git a/src/libstd/io/error.rs b/src/libstd/io/error.rs
index 85b957640fd..c4e472f158e 100644
--- a/src/libstd/io/error.rs
+++ b/src/libstd/io/error.rs
@@ -95,6 +95,13 @@ pub enum ErrorKind {
     /// A parameter was incorrect.
     #[stable(feature = "rust1", since = "1.0.0")]
     InvalidInput,
+    /// Data not valid for the operation were encountered.
+    ///
+    /// Unlike `InvalidInput`, this typically means that the operation
+    /// parameters were valid, however the error was caused by malformed
+    /// input data.
+    #[stable(feature = "io_invalid_data", since = "1.2.0")]
+    InvalidData,
     /// The I/O operation's timeout expired, causing it to be canceled.
     #[stable(feature = "rust1", since = "1.0.0")]
     TimedOut,
diff --git a/src/libstd/io/mod.rs b/src/libstd/io/mod.rs
index c664def304e..3d0dfbba0ab 100644
--- a/src/libstd/io/mod.rs
+++ b/src/libstd/io/mod.rs
@@ -80,7 +80,7 @@ fn append_to_string<F>(buf: &mut String, f: F) -> Result<usize>
         let ret = f(g.s);
         if str::from_utf8(&g.s[g.len..]).is_err() {
             ret.and_then(|_| {
-                Err(Error::new(ErrorKind::InvalidInput,
+                Err(Error::new(ErrorKind::InvalidData,
                                "stream did not contain valid UTF-8"))
             })
         } else {
diff --git a/src/libstd/sys/windows/stdio.rs b/src/libstd/sys/windows/stdio.rs
index 03547165f5d..e56722a189d 100644
--- a/src/libstd/sys/windows/stdio.rs
+++ b/src/libstd/sys/windows/stdio.rs
@@ -170,5 +170,5 @@ impl Output {
 }
 
 fn invalid_encoding() -> io::Error {
-    io::Error::new(io::ErrorKind::InvalidInput, "text was not valid unicode")
+    io::Error::new(io::ErrorKind::InvalidData, "text was not valid unicode")
 }