summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2021-02-18 11:11:11 +0100
committerMattias EngdegÄrd <mattiase@acm.org>2021-02-18 11:32:50 +0100
commit892db042a0d85caeea9a4969073e13f525eb9f60 (patch)
tree9f788aa6079518167673d2510b8ae5306fe5c872 /lisp/emacs-lisp
parent8358637936c455d906675932db4cbf90c35b6c53 (diff)
downloademacs-892db042a0d85caeea9a4969073e13f525eb9f60.tar.gz
emacs-892db042a0d85caeea9a4969073e13f525eb9f60.tar.bz2
emacs-892db042a0d85caeea9a4969073e13f525eb9f60.zip
Fix rx `regexp` form with deprecated syntax
The argument of the rx `regexp` form is assumed to evaluate to a valid regexp, but certain kinds of deprecated but still accepted usage were not handled correctly, such as unescaped literal (special) characters: (rx "a" (regexp "*")) => "a*" which is wrong. Handle these cases; there is no extra trouble. * lisp/emacs-lisp/rx.el (rx--translate-regexp): Force bracketing of single special characters. * test/lisp/emacs-lisp/rx-tests.el (rx-regexp): Add test case.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/rx.el2
1 files changed, 1 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/rx.el b/lisp/emacs-lisp/rx.el
index b29b870061d..58584f300c9 100644
--- a/lisp/emacs-lisp/rx.el
+++ b/lisp/emacs-lisp/rx.el
@@ -890,7 +890,7 @@ Return (REGEXP . PRECEDENCE)."
(* (or (seq "[:" (+ (any "a-z")) ":]")
(not (any "]"))))
"]")
- anything
+ (not (any "*+?^$[\\"))
(seq "\\"
(or anything
(seq (any "sScC_") anything)