diff --git a/serde/src/de/impls.rs b/serde/src/de/impls.rs index 2946dcfe..5f5307fd 100644 --- a/serde/src/de/impls.rs +++ b/serde/src/de/impls.rs @@ -305,9 +305,8 @@ impl Deserialize for CString { fn deserialize(deserializer: D) -> Result where D: Deserializer { - let v: Vec = try!(ByteBuf::deserialize(deserializer)).into(); - CString::new(v) - .map_err(|e| Error::custom(format!("unexpected NULL at byte {}", e.nul_position()))) + let bytes = try!(ByteBuf::deserialize(deserializer)); + CString::new(bytes).map_err(Error::custom) } } diff --git a/test_suite/tests/test_de.rs b/test_suite/tests/test_de.rs index 8e79f1f1..fa5943c2 100644 --- a/test_suite/tests/test_de.rs +++ b/test_suite/tests/test_de.rs @@ -1005,12 +1005,12 @@ declare_error_tests! { &[ Token::Bytes(b"a\0c"), ], - Error::Message("unexpected NULL at byte 1".into()), + Error::Message("nul byte found in provided data at position: 1".into()), } test_cstring_internal_null_end { &[ Token::Bytes(b"ac\0"), ], - Error::Message("unexpected NULL at byte 2".into()), + Error::Message("nul byte found in provided data at position: 2".into()), } }