diff options
author | Sam Scott <sam.scott89@gmail.com> | 2017-05-28 22:55:46 +0100 |
---|---|---|
committer | Sam Scott <sam.scott89@gmail.com> | 2017-05-28 23:00:47 +0100 |
commit | 9a622ddad5e8edaf62beb1083c9433ccead11c82 (patch) | |
tree | fcb139f144bf787bbf01e5475e23054fb519c8c0 /src/de | |
parent | 15137be4a0b02a40bea178127472554d8a7bba3a (diff) |
Create correct level type when parsing a nested ordered seq.
Fixes #7.
Diffstat (limited to 'src/de')
-rw-r--r-- | src/de/parse.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/src/de/parse.rs b/src/de/parse.rs index b9f2b35..e015d94 100644 --- a/src/de/parse.rs +++ b/src/de/parse.rs @@ -346,7 +346,7 @@ impl<I: Iterator<Item = u8>> Parser<I> { }, b'[' => { if let Level::Invalid(_) = *node { - *node = Level::Nested(BTreeMap::default()); + *node = Level::OrderedSeq(BTreeMap::default()); } if let Level::OrderedSeq(ref mut map) = *node { self.depth -= 1; @@ -398,7 +398,7 @@ impl<I: Iterator<Item = u8>> Parser<I> { }, // First character is an integer, attempt to parse it as an integer key - 0x30...0x39 => { + b'0'...b'9' => { let key = self.parse_key(b']', true)?; let key = usize::from_str_radix(&key, 10).map_err(Error::from)?; self.parse_ord_seq_value(key, node)?; @@ -419,6 +419,8 @@ impl<I: Iterator<Item = u8>> Parser<I> { }, // This means the key should be a root key // of the form "abc" or "abc[...]" + // We do actually allow integer keys here since they cannot + // be confused with sequences 0x20...0x5a | 0x5c...0x7e => { let key = self.parse_key(b'[', false)?; self.parse_map_value(key, node)?; |