• Mattias Engdegård's avatar
    Fix reader char escape bugs (bug#55738) · c50718dc
    Mattias Engdegård authored
    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.
    c50718dc
lread-tests.el 12.6 KB