changeset 105948:d319f1aaff7c

(define-charset): Purecopy props. (load-with-code-conversion): Purecopy doc string and file name. (put-charset-property): Purecopy strings. (auto-coding-alist, auto-coding-regexp-alist): Purecopy initial value.
author Dan Nicolaescu <dann@ics.uci.edu>
date Wed, 11 Nov 2009 06:27:23 +0000
parents 6bc99fd16720
children 981ea078cf76
files lisp/ChangeLog lisp/international/mule.el
diffstat 2 files changed, 16 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/ChangeLog	Wed Nov 11 06:22:30 2009 +0000
+++ b/lisp/ChangeLog	Wed Nov 11 06:27:23 2009 +0000
@@ -1,5 +1,10 @@
 2009-11-11  Dan Nicolaescu  <dann@ics.uci.edu>
 
+	* international/mule.el (define-charset): Purecopy props.
+	(load-with-code-conversion): Purecopy doc string and file name.
+	(put-charset-property): Purecopy strings.
+	(auto-coding-alist, auto-coding-regexp-alist): Purecopy initial value.
+
 	* international/mule-cmds.el (register-input-method); Purecopy arguments.
 	(define-char-code-property): Correctly purecopy the table.
 
--- a/lisp/international/mule.el	Wed Nov 11 06:22:30 2009 +0000
+++ b/lisp/international/mule.el	Wed Nov 11 06:27:23 2009 +0000
@@ -264,7 +264,7 @@
 	  (aset emacs-mule-charset-table emacs-mule-id name)))
 
     (dolist (slot attrs)
-      (setcdr slot (plist-get props (car slot))))
+      (setcdr slot (purecopy (plist-get props (car slot)))))
 
     ;; Make sure that the value of :code-space is a vector of 8
     ;; elements.
@@ -277,7 +277,7 @@
 
     ;; Add :name and :docstring properties to PROPS.
     (setq props
-	  (cons :name (cons name (cons :docstring (cons docstring props)))))
+	  (cons :name (cons name (cons :docstring (cons (purecopy docstring) props)))))
     (or (plist-get props :short-name)
 	(plist-put props :short-name (symbol-name name)))
     (or (plist-get props :long-name)
@@ -317,7 +317,7 @@
 	    (message "Loading %s (source)..." file)
 	  (message "Loading %s..." file)))
       (when purify-flag
-	(push file preloaded-file-list))
+	(push (purecopy file) preloaded-file-list))
       (unwind-protect
 	  (let ((load-file-name fullname)
 		(set-auto-coding-for-load t)
@@ -433,7 +433,10 @@
   "Set CHARSETS's PROPNAME property to value VALUE.
 It can be retrieved with `(get-charset-property CHARSET PROPNAME)'."
   (set-charset-plist charset
-		     (plist-put (charset-plist charset) propname value)))
+		     (plist-put (charset-plist charset) propname
+				(if (stringp value)
+				    (purecopy value)
+				  value))))
 
 (defun charset-description (charset)
   "Return description string of CHARSET."
@@ -1620,7 +1623,7 @@
 (defcustom auto-coding-alist
   ;; .exe and .EXE are added to support archive-mode looking at DOS
   ;; self-extracting exe archives.
-  '(("\\.\\(\
+  (purecopy '(("\\.\\(\
 arc\\|zip\\|lzh\\|lha\\|zoo\\|[jew]ar\\|xpi\\|rar\\|\
 ARC\\|ZIP\\|LZH\\|LHA\\|ZOO\\|[JEW]AR\\|XPI\\|RAR\\)\\'"
      . no-conversion-multibyte)
@@ -1629,7 +1632,7 @@
     ("\\.\\(gz\\|Z\\|bz\\|bz2\\|gpg\\)\\'" . no-conversion)
     ("\\.\\(jpe?g\\|png\\|gif\\|tiff?\\|p[bpgn]m\\)\\'" . no-conversion)
     ("\\.pdf\\'" . no-conversion)
-    ("/#[^/]+#\\'" . emacs-mule))
+    ("/#[^/]+#\\'" . emacs-mule)))
   "Alist of filename patterns vs corresponding coding systems.
 Each element looks like (REGEXP . CODING-SYSTEM).
 A file whose name matches REGEXP is decoded by CODING-SYSTEM on reading.
@@ -1643,11 +1646,12 @@
 		       (symbol :tag "Coding system"))))
 
 (defcustom auto-coding-regexp-alist
+  (purecopy
   '(("\\`BABYL OPTIONS:[ \t]*-\\*-[ \t]*rmail[ \t]*-\\*-" . no-conversion)
     ("\\`\xFE\xFF" . utf-16be-with-signature)
     ("\\`\xFF\xFE" . utf-16le-with-signature)
     ("\\`\xEF\xBB\xBF" . utf-8-with-signature)
-    ("\\`;ELC\024\0\0\0" . emacs-mule))	; Emacs 20-compiled
+    ("\\`;ELC\024\0\0\0" . emacs-mule)))	; Emacs 20-compiled
   "Alist of patterns vs corresponding coding systems.
 Each element looks like (REGEXP . CODING-SYSTEM).
 A file whose first bytes match REGEXP is decoded by CODING-SYSTEM on reading.