aboutsummaryrefslogtreecommitdiff
path: root/core/encoding/json/parser.odin
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2022-04-19 20:04:38 +0200
committerJeroen van Rijn <Kelimion@users.noreply.github.com>2022-04-19 20:04:38 +0200
commit581255bf23af90b77bb2b6e2671b40e2b565754e (patch)
tree5091553fcca64ec63bad3d76fdf28b88b6b246ab /core/encoding/json/parser.odin
parentb51358a01c2950cf8f572ce4934f88ee55cad5a7 (diff)
Fix unmarshal for escaped strings.
Diffstat (limited to 'core/encoding/json/parser.odin')
-rw-r--r--core/encoding/json/parser.odin5
1 files changed, 5 insertions, 0 deletions
diff --git a/core/encoding/json/parser.odin b/core/encoding/json/parser.odin
index c682ec9bd..0b9a1cf33 100644
--- a/core/encoding/json/parser.odin
+++ b/core/encoding/json/parser.odin
@@ -281,6 +281,11 @@ parse_object :: proc(p: ^Parser) -> (value: Value, err: Error) {
// IMPORTANT NOTE(bill): unquote_string assumes a mostly valid string
unquote_string :: proc(token: Token, spec: Specification, allocator := context.allocator) -> (value: string, err: Error) {
+ if allocator.data == nil {
+ // We were called from `unmarshal_count_array`, return early.
+ return "", nil
+ }
+
get_u2_rune :: proc(s: string) -> rune {
if len(s) < 4 || s[0] != '\\' || s[1] != 'x' {
return -1