GNU bug report logs - #11811
23.2; Macro pushnew in cl.el captures variable x

Previous Next

Package: emacs;

Reported by: Janne Nykopp <janne.nykopp <at> iki.fi>

Date: Thu, 28 Jun 2012 21:24:01 UTC

Severity: normal

Found in version 23.2

Done: Juanma Barranquero <lekktu <at> gmail.com>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 11811 in the body.
You can then email your comments to 11811 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#11811; Package emacs. (Thu, 28 Jun 2012 21:24:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Janne Nykopp <janne.nykopp <at> iki.fi>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 28 Jun 2012 21:24:02 GMT) Full text and rfc822 format available.

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

From: Janne Nykopp <janne.nykopp <at> iki.fi>
To: bug-gnu-emacs <at> gnu.org
Subject: 23.2; Macro pushnew in cl.el captures variable x
Date: Thu, 28 Jun 2012 23:45:24 +0300
Evaluating the following forms triggers a lisp error:
(require 'cl)
(let ((x (list 1 2 3)))
  (pushnew 'a x))

Evaluating in *scratch* buffer results in the following debugger
backtrace:
Debugger entered--Lisp error: (wrong-type-argument listp a)
  memql(a a)
  (if (memql x x) x (setq x (cons x x)))
  (let ((x ...)) (if (memql x x) x (setq x ...)))
  (pushnew (quote a) x)
  (let ((x ...)) (pushnew (quote a) x))
  eval((let ((x ...)) (pushnew (quote a) x)))
  eval-last-sexp-1(t)
  eval-last-sexp(t)
  eval-print-last-sexp()
  call-interactively(eval-print-last-sexp nil nil)

The macro `pushnew' seems to capture variable x when no keyword
arguments are given:
(macroexpand '(pushnew 'a x)) =>
(let ((x (quote a))) (if (memql x x) x (setq x (cons x x))))

This bug still exists in emacs-24 developer branch cl.el revision
108062 (latest version at the time of writing).



Information collected by M-x report-emacs-bug follows.

In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
 of 2010-12-11 on raven, modified by Debian
Windowing system distributor `The X.Org Foundation', version 11.0.10707000
configured using `configure  '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.utf8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
<help-echo> <help-echo> ( r e q u i r e SPC ' c l ) 
<return> <backspace> C-j ( l e t SPC ( ( x SPC ( l 
i s t SPC 1 SPC 3 SPC 4 <backspace> <backspace> <backspace> 
2 SPC 4 ) <backspace> <backspace> 3 ) ) ) <return> 
<tab> ( p u s h n e w SPC ' a SPC x ) ) C-j q M-x r 
e p o r t - <tab> <return>

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.
Entering debugger...
Back to top level.

Load-path shadows:
/usr/share/emacs/23.2/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs/23.2/site-lisp/dictionaries-common/ispell hides /usr/share/emacs/23.2/lisp/textmodes/ispell
/usr/share/emacs/23.2/site-lisp/dictionaries-common/flyspell hides /usr/share/emacs/23.2/lisp/textmodes/flyspell

Features:
(shadow sort mail-extr message sendmail regexp-opt ecomplete rfc822 mml
mml-sec password-cache mm-decode mm-bodies mm-encode mailcap mail-parse
rfc2231 rfc2047 rfc2045 qp ietf-drums mailabbrev nnheader gnus-util
netrc time-date mm-util mail-prsvr gmm-utils wid-edit mailheader canlock
sha1 hex-util hashcash mail-utils emacsbug help-mode easymenu view debug
cl cl-19 tooltip ediff-hook vc-hooks lisp-float-type mwheel x-win x-dnd
font-setting tool-bar dnd fontset image fringe lisp-mode register page
menu-bar rfn-eshadow timer select scroll-bar mldrag mouse jit-lock
font-lock syntax facemenu font-core frame cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind system-font-setting
font-render-setting gtk x-toolkit x multi-tty emacs)




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#11811; Package emacs. (Thu, 28 Jun 2012 21:44:01 GMT) Full text and rfc822 format available.

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

From: "Drew Adams" <drew.adams <at> oracle.com>
To: "'Janne Nykopp'" <janne.nykopp <at> iki.fi>, <11811 <at> debbugs.gnu.org>
Subject: RE: bug#11811: 23.2; Macro pushnew in cl.el captures variable x
Date: Thu, 28 Jun 2012 14:39:17 -0700
 
Seems to be a regression introduced in Emacs 22.
Works OK (wrt this bug) in Emacs 21 and 20, but not in 22+.





Reply sent to Juanma Barranquero <lekktu <at> gmail.com>:
You have taken responsibility. (Thu, 28 Jun 2012 23:12:01 GMT) Full text and rfc822 format available.

Notification sent to Janne Nykopp <janne.nykopp <at> iki.fi>:
bug acknowledged by developer. (Thu, 28 Jun 2012 23:12:01 GMT) Full text and rfc822 format available.

Message #13 received at 11811-done <at> debbugs.gnu.org (full text, mbox):

From: Juanma Barranquero <lekktu <at> gmail.com>
To: Janne Nykopp <janne.nykopp <at> iki.fi>
Cc: 11811-done <at> debbugs.gnu.org
Subject: Re: bug#11811: 23.2; Macro pushnew in cl.el captures variable x
Date: Fri, 29 Jun 2012 01:06:08 +0200
On Thu, Jun 28, 2012 at 10:45 PM, Janne Nykopp <janne.nykopp <at> iki.fi> wrote:

> The macro `pushnew' seems to capture variable x when no keyword
> arguments are given:
> (macroexpand '(pushnew 'a x)) =>
> (let ((x (quote a))) (if (memql x x) x (setq x (cons x x))))

Yes.

> This bug still exists in emacs-24 developer branch cl.el revision
> 108062 (latest version at the time of writing).

Should be fixed in the trunk, in revno:108794.

    Juanma




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 27 Jul 2012 11:24:03 GMT) Full text and rfc822 format available.

This bug report was last modified 11 years and 301 days ago.

Previous Next


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