GNU bug report logs - #11780
24.1.50; vc-annotate fails for files in RCS. ("cl.el" `flet' problem?)

Previous Next

Package: emacs;

Reported by: Richard Copley <rcopley <at> gmail.com>

Date: Mon, 25 Jun 2012 17:29:02 UTC

Severity: normal

Found in version 24.1.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


Message #14 received at 11780 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Richard Copley <rcopley <at> gmail.com>, 11780 <at> debbugs.gnu.org
Subject: Re: bug#11780: 24.1.50;
	vc-annotate fails for files in RCS. ("cl.el" `flet' problem?)
Date: Tue, 26 Jun 2012 18:41:51 -0400
Here's what the expansion of

(flet ((sw () (skip-chars-forward " \t\n")))
  (sw))

looks like in 24.1:

(let*
    ((--cl-letf-bound--
      (fboundp 'sw))
     (--cl-letf-save--
      (and --cl-letf-bound--
         (symbol-function 'sw))))
  (unwind-protect
      (progn
      (fset 'sw
            (function*
                   (lambda nil
                            (block sw
                                      (skip-chars-forward "  \n")))))
                                      (sw))
    (if --cl-letf-bound--
    (fset 'sw --cl-letf-save--)
      (fmakunbound 'sw))))

whereas in the current trunk it looks like this:


(let*
    ((x
      (cl-function
       (lambda nil
        (cl-block sw
           (skip-chars-forward "    \n")))))
     (x
      (symbol-function 'sw)))
  (unwind-protect
      (progn
      (fset 'sw x)
      (sw))
    (fset 'sw x)))

So there's a couple of things wrong with the new version:
`x' used twice as a local variable.
(symbol-function 'sw) not guarded by an (fboundp 'sw) check.

The latter is the immediate source of the error AFAICS.




This bug report was last modified 12 years and 333 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.