Subject: master branch: `message' wrongly corrupts ' to curly quote.

From: Alan Mackenzie <[email-masked]>
Date: Mon, 2 May 2016 14:55:17 +0000

Hello, Emacs.

In the following function:

(defun replay-parse-state-state ()
  (message
   (concat "(setq "
    (mapconcat
     (lambda (arg)
       (format "%s %s%s" (car arg)
	       (if (atom (cdr arg)) "" "'")  <==================
	       (if (markerp (cdr arg))
		   (format "(copy-marker %s)" (marker-position (cdr arg)))
		 (cdr arg))))
     c-parse-state-state "  ")
    ")")))

, the quote mark on the marked line is an ASCII quote, 0x27.  When this
function runs in the Emacs master branch under X-Windows, the output of
this quote gets corrupted into a curly quote, as follows:

                    |
                    v
(setq c-state-cache ’((32429 . 33731) 795 365)  c-state-cache-good-pos
33731  c-state-nonlit-pos-cache ’(53334 50334 47334 44334 41334 38334
35334 32334 29099 26099 23099 20099 17099 13993 10731 7641)
c-state-nonlit-pos-cache-limit 53334  c-state-semi-nonlit-pos-cache
’(32334 29099 26099 23099 20099 17099 13993 10731 7641)
c-state-semi-nonlit-pos-cache-limit 32334  c-state-brace-pair-desert nil
c-state-point-min 1  c-state-point-min-lit-type nil
c-state-point-min-lit-start nil  c-state-min-scan-pos 1
c-state-old-cpp-beg nil  c-state-old-cpp-end nil  c-parse-state-point
33733)

When this output is fed back into Emacs with M-:, it produces an obscure
error message.

This has wasted a lot of time identifying the problem, and fruitlessly
searching for a solution in the Emacs and Elisp manuals, etc.

This is a bug.  If a constant ASCII quote is presented to `message' or
`format', it should be processed as such.  This bug might exist in the
emacs-25 branch, too.  If so, could it be corrected there too, please,
before the release?

-- 
Alan Mackenzie (Nuremberg, Germany).