From c7bc28bf038e08fcc03e5dc96cd762af06b34e09 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Sat, 16 May 2020 17:04:15 -0700 Subject: Don’t attempt to modify constant conses From a patch privately suggested by Mattias Engdegård on 2020-05-11 in a followup to Bug#40671. * admin/charsets/cp51932.awk: * admin/charsets/eucjp-ms.awk: Generate code that does not modify constant conses. * doc/misc/emacs-mime.texi (Encoding Customization): * lisp/emacs-lisp/byte-opt.el (byte-compile-side-effect-free-ops): * lisp/frameset.el (frameset-persistent-filter-alist): * lisp/gnus/gnus-sum.el (gnus-article-mode-line-format-alist): Use append instead of nconc. * lisp/language/japanese.el (japanese-ucs-cp932-to-jis-map) (jisx0213-to-unicode): Use mapcar instead of mapc. * lisp/language/lao-util.el (lao-transcription-consonant-alist) (lao-transcription-vowel-alist): * lisp/language/tibetan.el (tibetan-subjoined-transcription-alist): Use copy-sequence. * test/src/fns-tests.el (fns-tests-nreverse): (fns-tests-sort, fns-tests-collate-sort) (fns-tests-string-version-lessp, fns-tests-mapcan): Use copy-sequence, vector, and list. --- admin/charsets/cp51932.awk | 13 +++++++------ admin/charsets/eucjp-ms.awk | 14 ++++++++------ 2 files changed, 15 insertions(+), 12 deletions(-) (limited to 'admin') diff --git a/admin/charsets/cp51932.awk b/admin/charsets/cp51932.awk index 6aac98815b5..c3555095249 100644 --- a/admin/charsets/cp51932.awk +++ b/admin/charsets/cp51932.awk @@ -43,13 +43,14 @@ BEGIN { END { print ")))"; - print " (mapc #'(lambda (x)"; - print " (setcar x (decode-char 'japanese-jisx0208 (car x))))"; - print " map)"; + print " (setq map (mapcar (lambda (x)"; + print " (cons (decode-char 'japanese-jisx0208 (car x))"; + print " (cdr x)))"; + print " map))"; print " (define-translation-table 'cp51932-decode map)"; - print " (mapc #'(lambda (x)"; - print " (let ((tmp (car x)))"; - print " (setcar x (cdr x)) (setcdr x tmp)))"; + print " (mapc (lambda (x)"; + print " (let ((tmp (car x)))"; + print " (setcar x (cdr x)) (setcdr x tmp)))"; print " map)"; print " (define-translation-table 'cp51932-encode map))"; print ""; diff --git a/admin/charsets/eucjp-ms.awk b/admin/charsets/eucjp-ms.awk index 0c9f94d0f48..f6a6748ce51 100644 --- a/admin/charsets/eucjp-ms.awk +++ b/admin/charsets/eucjp-ms.awk @@ -93,15 +93,17 @@ function write_entry (unicode) { END { print ")))"; - print " (mapc #'(lambda (x)"; + print " (setq map"; + print " (mapcar"; + print " (lambda (x)"; print " (let ((code (logand (car x) #x7F7F)))"; print " (if (integerp (cdr x))"; - print " (setcar x (decode-char 'japanese-jisx0208 code))"; - print " (setcar x (decode-char 'japanese-jisx0212 code))"; - print " (setcdr x (cadr x)))))"; - print " map)"; + print " (cons (decode-char 'japanese-jisx0208 code) (cdr x))"; + print " (cons (decode-char 'japanese-jisx0212 code)" + print " (cadr x)))))"; + print " map))"; print " (define-translation-table 'eucjp-ms-decode map)"; - print " (mapc #'(lambda (x)"; + print " (mapc (lambda (x)"; print " (let ((tmp (car x)))"; print " (setcar x (cdr x)) (setcdr x tmp)))"; print " map)"; -- cgit v1.2.1