Subject: Regression bug in auto-coding-alist

From: Juri Linkov <[email-masked]>
Date: Mon, 03 May 2010 03:34:00 +0300

I just discovered a regression bug wrt 23.1.

Loading arc-mode fails.

Arc-mode is a mode for the programming language Arc,
not for file archives.

It contains the following code to remove `no-conversion' associated with
the .arc extension from `auto-coding-alist' because there is a file
extension clash between Arc the programming language and file archives:

  ;; By default, Emacs thinks .arc is an archive extension.
  ;; This makes it normal.
  (dolist (coding auto-coding-alist)
    (when (and (string-match "[Aa][Rr][Cc]\\\\|" (car coding))
               (or (eq (cdr coding) 'no-conversion)
                   (eq (cdr coding) 'no-conversion-multibyte)))
      (setcar coding (replace-match "" nil nil (car coding)))))

This code fails with

  (error "Attempt to modify read-only object")

A similar bug#4917 http://debbugs.gnu.org/4917
for `auto-coding-regexp-alist' was fixed 2009-11-13
by using purecopy only for car or each item,
not the whole list.

To make the code above to not fail, purecopy should be removed
from `auto-coding-alist'.

-- 
Juri Linkov
http://www.jurta.org/emacs/