]> git.eshelyaron.com Git - emacs.git/commitdiff
Let ?\LF signal an error (bug#55738)
authorMattias Engdegård <mattiase@acm.org>
Fri, 3 Jun 2022 08:12:24 +0000 (10:12 +0200)
committerMattias Engdegård <mattiase@acm.org>
Fri, 3 Jun 2022 09:23:30 +0000 (11:23 +0200)
As suggested by Stefan Monnier.

* src/lread.c (read_escape):
Signal an error for ?\LF since it cannot reasonably be intended.
* test/src/lread-tests.el (lread-escaped-lf): Update test.
* etc/NEWS: Announce.

etc/NEWS
src/lread.c
test/src/lread-tests.el

index f9409bb24f877015ba01746eac354924efe61d11..54bc6d80e1a06fead4b30fea66a696e10b987acc 100644 (file)
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -1922,6 +1922,9 @@ It was previously only run by 'clone-indirect-buffer' and
 called by both of these, the hook is now run by all 3 of these
 functions.
 
+---
+** '?\' at the end of a line now signals an error.
+Previously it produced a nonsense value, -1, that was never intended.
 \f
 * Lisp Changes in Emacs 29.1
 
index 4b7d38a8e6c338544d8cf9174b2c3a572774f10b..1d20470a8bfb6f19641e148584e05c6cdf6acb25 100644 (file)
@@ -2664,6 +2664,10 @@ read_escape (Lisp_Object readcharfun)
     case 'v':
       return '\v';
 
+    case '\n':
+      /* ?\LF is an error; it's probably a user mistake.  */
+      error ("Invalid escape character syntax");
+
     case 'M':
       c = READCHAR;
       if (c != '-')
index 99eec9d54870fc62c44214135ddea938fd22ef0d..f190f14781e996ce8c3f595317b9cf13517468b2 100644 (file)
@@ -318,8 +318,8 @@ literals (Bug#20852)."
                  '(## . 2))))
 
 (ert-deftest lread-escaped-lf ()
-  ;; ?\LF should produce LF (only inside string literals do we ignore \LF).
-  (should (equal (read-from-string "?\\\n") '(?\n . 3)))
+  ;; ?\LF should signal an error; \LF is ignored inside string literals.
+  (should-error (read-from-string "?\\\n x"))
   (should (equal (read-from-string "\"a\\\nb\"") '("ab" . 6))))
 
 ;;; lread-tests.el ends here