]> git.eshelyaron.com Git - emacs.git/commit
Fix json.el encoding of confusable object keys
authorBasil L. Contovounesios <contovob@tcd.ie>
Thu, 11 Feb 2021 12:00:05 +0000 (12:00 +0000)
committerBasil L. Contovounesios <contovob@tcd.ie>
Sun, 21 Feb 2021 12:53:45 +0000 (12:53 +0000)
commit908f251e19dc64c75000f87bc6db4e9a8852d1ad
tree4b3fd90665bca22fd75baedccfa72afb47b78342
parent767608ef56044af63712206325d177b0caf279df
Fix json.el encoding of confusable object keys

* lisp/json.el (json-encode-string): Clarify commentary.
(json--encode-stringlike): New function that covers a subset of
json-encode.
(json-encode-key): Use it for more efficient encoding and
validation, and to avoid mishandling confusable keys like boolean
symbols (bug#42545).
(json-encode-array): Make it clearer that argument can be a list.
(json-encode): Reuse json-encode-keyword and json--encode-stringlike
for a subset of the dispatch logic.
(json-pretty-print): Ensure confusable keys like ":a" survive a
decoding/encoding roundtrip (bug#24252, bug#45032).

* test/lisp/json-tests.el (test-json-encode-string)
(test-json-encode-hash-table, test-json-encode-alist)
(test-json-encode-plist, test-json-pretty-print-object): Test
encoding of confusable keys.
lisp/json.el
test/lisp/json-tests.el