]> git.eshelyaron.com Git - emacs.git/commit
Fix reader char escape bugs (bug#55738)
authorMattias Engdegård <mattiase@acm.org>
Wed, 1 Jun 2022 09:39:44 +0000 (11:39 +0200)
committerMattias Engdegård <mattiase@acm.org>
Wed, 1 Jun 2022 17:47:30 +0000 (19:47 +0200)
commitc50718dcfa54293b695f8a3fa5cd4d77848ee084
treeff0c224f50af5365e7fc3cb03c7cab5011eca50f
parent84e122dc9676f1bcf36db62f313b0343a073982b
Fix reader char escape bugs (bug#55738)

Make the character literal ?\LF (linefeed) generate 10, not -1.

Ensure that Control escape sequences in character literals are
idempotent: ?\C-\C-a and ?\^\^a mean the same thing as ?\C-a and ?\^a,
generating the control character with value 1.  "\C-\C-a" no longer
signals an error.

* src/lread.c (read_escape): Make nonrecursive and only combine
the base char with modifiers at the end, creating control chars
if applicable.  Remove the `stringp` argument; assume character
literal syntax.  Never return -1.
(read_string_literal): Handle string-specific escape semantics here
and simplify.
* test/src/lread-tests.el (lread-misc-2): New test.
src/lread.c
test/src/lread-tests.el