diff options
| author | Paul Eggert | 2020-05-16 22:23:28 -0700 |
|---|---|---|
| committer | Paul Eggert | 2020-05-16 22:25:07 -0700 |
| commit | 313955110b242cd18fc19bd168032d3ddf39fe94 (patch) | |
| tree | 4292cf3b216b6a76e5c28e3841c2f6fa2f56caf3 /lisp | |
| parent | 1fc4e3fb3f6caba6a4ca69060c7992ea5d24ff36 (diff) | |
| download | emacs-313955110b242cd18fc19bd168032d3ddf39fe94.tar.gz emacs-313955110b242cd18fc19bd168032d3ddf39fe94.zip | |
Don’t attempt to modify constant strings
* lisp/bookmark.el (bookmark-bmenu-set-header):
Use copy-sequence instead of concat, for clarity.
Also, the byte-compiler optimizes (concat "a" "b") into "ab".
* lisp/button.el (make-text-button):
* test/lisp/erc/erc-track-tests.el (erc-track--erc-faces-in):
* test/lisp/password-cache-tests.el:
(password-cache-tests-add-and-remove)
(password-cache-tests-read-from-cache)
(password-cache-tests-in-cache-p, password-cache-tests-read)
(password-cache-tests-reset)
(password-cache-tests-add/expires-key)
(password-cache-tests-no-password-cache):
Don’t attempt to modify constant strings.
* lisp/progmodes/elisp-mode.el (elisp--xref-format)
(elisp--xref-format-extra):
Don’t attempt to modify constant strings via put-text-property.
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-macs-loop-across-ref):
Don’t attempt to modify constant vectors or strings.
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/bookmark.el | 2 | ||||
| -rw-r--r-- | lisp/button.el | 2 | ||||
| -rw-r--r-- | lisp/password-cache.el | 2 | ||||
| -rw-r--r-- | lisp/progmodes/elisp-mode.el | 14 |
4 files changed, 9 insertions, 11 deletions
diff --git a/lisp/bookmark.el b/lisp/bookmark.el index 0fa77ed3224..5bb16981711 100644 --- a/lisp/bookmark.el +++ b/lisp/bookmark.el | |||
| @@ -1723,7 +1723,7 @@ deletion, or > if it is flagged for displaying." | |||
| 1723 | ;; according to `bookmark-bookmarks-timestamp'. | 1723 | ;; according to `bookmark-bookmarks-timestamp'. |
| 1724 | (defun bookmark-bmenu-set-header () | 1724 | (defun bookmark-bmenu-set-header () |
| 1725 | "Set the immutable header line." | 1725 | "Set the immutable header line." |
| 1726 | (let ((header (concat "%% " "Bookmark"))) | 1726 | (let ((header (copy-sequence "%% Bookmark"))) |
| 1727 | (when bookmark-bmenu-toggle-filenames | 1727 | (when bookmark-bmenu-toggle-filenames |
| 1728 | (setq header (concat header | 1728 | (setq header (concat header |
| 1729 | (make-string (- bookmark-bmenu-file-column | 1729 | (make-string (- bookmark-bmenu-file-column |
diff --git a/lisp/button.el b/lisp/button.el index 3a6a6de774c..f969a03cb02 100644 --- a/lisp/button.el +++ b/lisp/button.el | |||
| @@ -349,7 +349,7 @@ Also see `insert-text-button'." | |||
| 349 | (or (plist-member properties 'type) | 349 | (or (plist-member properties 'type) |
| 350 | (plist-member properties :type)))) | 350 | (plist-member properties :type)))) |
| 351 | (when (stringp beg) | 351 | (when (stringp beg) |
| 352 | (setq object beg beg 0 end (length object))) | 352 | (setq object (copy-sequence beg) beg 0 end (length object))) |
| 353 | ;; Disallow setting the `category' property directly. | 353 | ;; Disallow setting the `category' property directly. |
| 354 | (when (plist-get properties 'category) | 354 | (when (plist-get properties 'category) |
| 355 | (error "Button `category' property may not be set directly")) | 355 | (error "Button `category' property may not be set directly")) |
diff --git a/lisp/password-cache.el b/lisp/password-cache.el index 5e5f3240bc3..86d802f283c 100644 --- a/lisp/password-cache.el +++ b/lisp/password-cache.el | |||
| @@ -31,7 +31,7 @@ | |||
| 31 | ;; ;; Minibuffer prompt for password. | 31 | ;; ;; Minibuffer prompt for password. |
| 32 | ;; => "foo" | 32 | ;; => "foo" |
| 33 | ;; | 33 | ;; |
| 34 | ;; (password-cache-add "test" "foo") | 34 | ;; (password-cache-add "test" (copy-sequence "foo")) |
| 35 | ;; => nil | 35 | ;; => nil |
| 36 | 36 | ||
| 37 | ;; (password-read "Password? " "test") | 37 | ;; (password-read "Password? " "test") |
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el index b737134f90c..d37eb8c152d 100644 --- a/lisp/progmodes/elisp-mode.el +++ b/lisp/progmodes/elisp-mode.el | |||
| @@ -655,18 +655,16 @@ functions are annotated with \"<f>\" via the | |||
| 655 | ;; WORKAROUND: This is nominally a constant, but the text properties | 655 | ;; WORKAROUND: This is nominally a constant, but the text properties |
| 656 | ;; are not preserved thru dump if use defconst. See bug#21237. | 656 | ;; are not preserved thru dump if use defconst. See bug#21237. |
| 657 | (defvar elisp--xref-format | 657 | (defvar elisp--xref-format |
| 658 | (let ((str "(%s %s)")) | 658 | #("(%s %s)" |
| 659 | (put-text-property 1 3 'face 'font-lock-keyword-face str) | 659 | 1 3 (face font-lock-keyword-face) |
| 660 | (put-text-property 4 6 'face 'font-lock-function-name-face str) | 660 | 4 6 (face font-lock-function-name-face))) |
| 661 | str)) | ||
| 662 | 661 | ||
| 663 | ;; WORKAROUND: This is nominally a constant, but the text properties | 662 | ;; WORKAROUND: This is nominally a constant, but the text properties |
| 664 | ;; are not preserved thru dump if use defconst. See bug#21237. | 663 | ;; are not preserved thru dump if use defconst. See bug#21237. |
| 665 | (defvar elisp--xref-format-extra | 664 | (defvar elisp--xref-format-extra |
| 666 | (let ((str "(%s %s %s)")) | 665 | #("(%s %s %s)" |
| 667 | (put-text-property 1 3 'face 'font-lock-keyword-face str) | 666 | 1 3 (face font-lock-keyword-face) |
| 668 | (put-text-property 4 6 'face 'font-lock-function-name-face str) | 667 | 4 6 (face font-lock-function-name-face))) |
| 669 | str)) | ||
| 670 | 668 | ||
| 671 | (defvar find-feature-regexp);; in find-func.el | 669 | (defvar find-feature-regexp);; in find-func.el |
| 672 | 670 | ||