Skip to content

Commit 561b0db

Browse files
committed
Make deserialize_bytes work more like deserialize_str
1 parent 92ddbdf commit 561b0db

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/de.rs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1113,18 +1113,30 @@ impl<'de, 'a, R: Read<'de>> de::Deserializer<'de> for &'a mut Deserializer<R> {
11131113
where
11141114
V: de::Visitor<'de>,
11151115
{
1116-
match try!(self.parse_whitespace()) {
1117-
Some(b'"') => {
1116+
let peek = match try!(self.parse_whitespace()) {
1117+
Some(b) => b,
1118+
None => {
1119+
return Err(self.peek_error(ErrorCode::EofWhileParsingValue));
1120+
}
1121+
};
1122+
1123+
let value = match peek {
1124+
b'"' => {
11181125
self.eat_char();
11191126
self.str_buf.clear();
11201127
match try!(self.read.parse_str_raw(&mut self.str_buf)) {
11211128
Reference::Borrowed(b) => visitor.visit_borrowed_bytes(b),
11221129
Reference::Copied(b) => visitor.visit_bytes(b),
11231130
}
11241131
}
1125-
_ => self.deserialize_any(visitor),
1126-
}
1132+
b'[' => self.deserialize_seq(visitor),
1133+
_ => Err(self.peek_invalid_type(&visitor)),
1134+
};
11271135

1136+
match value {
1137+
Ok(value) => Ok(value),
1138+
Err(err) => Err(self.fix_position(err)),
1139+
}
11281140
}
11291141

11301142
#[inline]

0 commit comments

Comments
 (0)