Subject: bug#9469: buffer-local variables seem to remember previous values

From: Le Wang <[email-masked]>
Date: Mon, 12 Sep 2011 03:18:39 +0800

On Mon, Sep 12, 2011 at 2:54 AM, Lars Magne Ingebrigtsen <[email-masked]> wrote:
> If I read your code correctly, Andreas is correct and precise as usual,
> if a bit terse.  :-)

Ok, that was my fault.  I didn't know how to make heads or tails of
the situation, so included some red herrings in my original snippet.
This should clarify my exact point of confusion:

(setq foo-alist nil)
	;; => nil

(defun reset-var-in-foo-alist ()
  (push '(:var . 0) foo-alist))
	;; => reset-var-in-foo-alist

(defun increment-var-in-foo-alist ()
  (let ((var-cons (assq :var foo-alist)))
    (setcdr var-cons (1+ (cdr var-cons)))))
	;; => increment-var-in-foo-alist

(reset-var-in-foo-alist)
	;; => ((:var . 0))
(increment-var-in-foo-alist)
	;; => 1
(reset-var-in-foo-alist)
	;; => ((:var . 1) (:var . 1))

Again, my misunderstanding was that in `reset-var-in-foo-alist' quote
does not cons, I assumed it did.

-- 
Le