From 6a3dfdcc8ae6954cbb3bfe1ea6cba123b4c2f2c1 Mon Sep 17 00:00:00 2001 From: Jacob Brown Date: Thu, 21 Sep 2017 14:29:55 -0500 Subject: fix parse_seq_value not decoding '+' to ' ' --- Cargo.toml | 2 +- src/de/parse.rs | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index d34e75c..56e1d70 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -16,7 +16,7 @@ repository = "samscott89/serde_qs" [dependencies] data-encoding = "1.2" -error-chain = "0.10.0" +error-chain = "0.11.0" dtoa = "0.4.0" fnv = "1.0.3" itoa = "0.3.0" diff --git a/src/de/parse.rs b/src/de/parse.rs index e015d94..a4d33b9 100644 --- a/src/de/parse.rs +++ b/src/de/parse.rs @@ -277,7 +277,7 @@ impl> Parser { } if let Level::Nested(ref mut map) = *node { self.depth -= 1; - self.parse(map.entry(key) + let _ = self.parse(map.entry(key) .or_insert(Level::Invalid("uninitialised")))?; Ok(()) } else { @@ -301,7 +301,11 @@ impl> Parser { b'=' => { self.acc.clear(); for b in self.inner.by_ref().take_while(|b| b != &b'&') { - self.acc.push(b); + if b == b'+' { + self.acc.push(b' '); + } else { + self.acc.push(b); + } } let value = String::from_utf8(self.acc.split_off(0)); let value = value.map_err(Error::from)?; @@ -350,7 +354,7 @@ impl> Parser { } if let Level::OrderedSeq(ref mut map) = *node { self.depth -= 1; - self.parse(map.entry(key) + let _ = self.parse(map.entry(key) .or_insert(Level::Invalid("uninitialised")))?; Ok(()) } else { -- cgit v1.2.3