GNU bug report logs -
#24784
26.0.50; JSON strings with utf-16 escape codes
Previous Next
Reported by: Helmut Eller <eller.helmut <at> gmail.com>
Date: Mon, 24 Oct 2016 18:07:01 UTC
Severity: normal
Found in version 26.0.50
Done: Philipp Stephani <p.stephani2 <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
Message #11 received at 24784 <at> debbugs.gnu.org (full text, mbox):
Philipp,
Thanks. Some comments:
On 24.10.2016 22:57, Philipp Stephani wrote:
> +(defsubst json--decode-utf-16-surrogates (high low)
IIRC, there might be no actual benefit from making it a defsubst. If
someone could benchmark it, I'd like to see the result.
> + ;; Special-case UTF-16 surrogate pairs,
> + ;; cf. https://tools.ietf.org/html/rfc7159#section-7
> + ((looking-at
> + (rx (group (any "Dd") (any "89ABab") (= 2 (any "0-9A-Fa-f")))
> + "\\u" (group (any "Dd") (any "C-Fc-f") (= 2 (any "0-9A-Fa-f")))))
> + (json-advance 10)
> + (json--decode-utf-16-surrogates
> + (string-to-number (match-string 1) 16)
> + (string-to-number (match-string 2) 16)))
Shouldn't this go below the UTF-8 case, as the less-frequent one?
> (ert-deftest test-json-encode-string ()
> (should (equal (json-encode-string "foo") "\"foo\""))
> (should (equal (json-encode-string "a\n\fb") "\"a\\n\\fb\""))
> - (should (equal (json-encode-string "\nasdфыв\u001f\u007ffgh\t")
> - "\"\\nasdфыв\\u001f\u007ffgh\\t\"")))
> + (should (equal (json-encode-string "\nasdфыв�\u001f\u007ffgh\t")
> + "\"\\nasdфыв�\\u001f\u007ffgh\\t\"")))
Why are we testing string encoding here?
This bug report was last modified 8 years and 145 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.