GNU bug report logs - #47391
27.2; static list return from function and nconc

Previous Next

Package: emacs;

Reported by: Rajeev Narang <rajeev.jnk <at> sivalik.com>

Date: Thu, 25 Mar 2021 15:21:03 UTC

Severity: normal

Tags: fixed

Found in version 27.2

Fixed in version 28.1

Done: Lars Ingebrigtsen <larsi <at> gnus.org>

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 47391 in the body.
You can then email your comments to 47391 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#47391; Package emacs. (Thu, 25 Mar 2021 15:21:03 GMT) Full text and rfc822 format available.

Acknowledgement sent to Rajeev Narang <rajeev.jnk <at> sivalik.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 25 Mar 2021 15:21:03 GMT) Full text and rfc822 format available.

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

From: Rajeev Narang <rajeev.jnk <at> sivalik.com>
To: bug-gnu-emacs <at> gnu.org, emacs-devel <at> gnu.org
Subject: 27.2; static list return from function and nconc
Date: Thu, 25 Mar 2021 10:54:20 -0400
(defun fn () '(1 2))

(nconc (fn) '(3))
-> (1 2 3)

(nconc (fn) '(3))
-> (1 2 3 3) ? should be (1 2 3)

If this is not a bug, then hfy-invisible, hfy-face-to-style-i may need to be fixed.


In GNU Emacs 27.2 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.24)
 of 2021-03-19 built on hp
Repository revision: deef5efafb70f4b171265b896505b92b6eef24e6
Repository branch: emacs-27
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Debian GNU/Linux bullseye/sid

Recent messages:
fn
(1 2 3)
(1 2 3 3)
next-line: End of buffer [2 times]
Mark activated
next-line: End of buffer
Making completion list...
Quit
Mark activated
Making completion list...

Configured using:
 'configure --prefix=/home/rajeev/tmp/build/emacs'

Configured features:
XPM JPEG TIFF GIF PNG RSVG SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS
LIBSYSTEMD JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LC_TIME: en_GB.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  reveal-mode: t
  global-so-long-mode: t
  global-auto-revert-mode: t
  shell-dirtrack-mode: t
  midnight-mode: t
  display-time-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  transient-mark-mode: t
  hs-minor-mode: t

Load-path shadows:
/home/rajeev/.config/emacs/elpa/map-3.0/map hides /home/rajeev/tmp/build/emacs/share/emacs/27.2/lisp/emacs-lisp/map

Features:
(shadow emacsbug dired-aux tabify man cal-move sh-script smie
executable smerge-mode diff vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs
vc-dir ewoc vc vc-dispatcher sort gnus-cite gnus-async gnus-bcklg
gnus-ml ob-ditaa ob-plantuml org-clock org-colview org-habit cl-print
debug misearch multi-isearch js eieio-opt speedbar sb-image ezimage
dframe hfy-cmap help-fns radix-tree htmlfontify htmlfontify-loaddefs
cus-edit cus-start cus-load cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs utf-7 nnml mm-archive
network-stream url-http url-gw nsm url-cache url-auth time-stamp
org-duration view mule-util face-remap edmacro kmacro server
cursor-sensor bbdb-gnus nnfolder pcase rx xt-mouse which-func imenu
timeclock spam spam-stat gnus-uu yenc semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw
mode-local cedet org-indent reveal mailalias bbdb-message mail-extr
ol-eww eww mm-url thingatpt url-queue ol-rmail ol-mhe ol-irc ol-info
ol-gnus nnir ol-docview doc-view jka-compr image-mode exif ol-bibtex
bibtex ol-bbdb ol-w3m icomplete so-long autorevert filenotify vc-git
diff-mode bbdb-anniv cl-extra tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell ls-lisp hideshow printing
ps-print ps-print-loaddefs ps-def lpr web-server
web-server-status-codes el/web midnight el/cron bbdb-mua backtrace
help-mode qp el/wthr el/av el/hass el/fin el/remote el/script
type-break cal-iso org-id lunar solar cal-dst holidays hol-loaddefs
el/calc el/loc term disp-table ehelp dirtrack dbus parsec plstore pp
gnutls gnus-delay gnus-draft gnus-agent gnus-srvr gnus-score
score-mode nnvirtual nntp gnus-cache gnus-msg nndraft nnmh
gnus-icalendar org-capture gnus-art mm-uu mml2015 mm-view mml-smime
smime dig icalendar sieve sieve-mode sieve-manage sasl sasl-anonymous
sasl-login sasl-plain sendmail time ox-odt rng-loc rng-uri rng-parse
rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns nxml-enc xmltok
nxml-util ox-latex ox-icalendar ox-html table ox-ascii ox-publish ox
org-element avl-tree generator org-agenda org-refile org-crypt org ob
ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote org-src
ob-comint org-pcomplete pcomplete comint ansi-color ring org-list
org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob-core ob-eval org-table ol org-keys org-compat advice
org-macs org-loaddefs find-func gnus-sum url url-proxy url-privacy
url-expand url-methods url-history mailcap shr url-cookie url-domsuf
url-util svg xml dom gnus-group gnus-undo gnus-start gnus-cloud nnimap
nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec
gnus-int gnus-range message rmc puny dired dired-loaddefs format-spec
rfc822 mml mml-sec epa derived epg epg-config mm-decode mm-bodies
mm-encode mail-parse rfc2231 gmm-utils mailheader gnus-win gnus
nnheader gnus-util rmail rmail-loaddefs rfc2047 rfc2045 ietf-drums
text-property-search time-date mail-utils mm-util mail-prsvr wid-edit
el/org el/doc el/mail el/tools el/shell el/xmpp el/diary timer-list
el/timer el/util bbdb-com crm mailabbrev bbdb bbdb-site timezone
el/bbdb appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs
el/init wombat-theme info package easymenu browse-url url-handlers
url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs
password-cache json subr-x map url-vars seq byte-opt gv bytecomp
byte-compile cconv cl-loaddefs cl-lib tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode elisp-mode lisp-mode
prog-mode register page tab-bar menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese
eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic
indian cyrillic chinese composite charscript charprop case-table
epa-hook jka-cmpr-hook help simple abbrev obarray cl-preloaded nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting move-toolbar
gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 684512 118274)
 (symbols 48 40819 5)
 (strings 32 175683 17540)
 (string-bytes 1 5739083)
 (vectors 16 77783)
 (vector-slots 8 1527654 184718)
 (floats 8 1239 1715)
 (intervals 56 41435 1244)
 (buffers 1000 118))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47391; Package emacs. (Thu, 25 Mar 2021 15:29:01 GMT) Full text and rfc822 format available.

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

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Rajeev Narang <rajeev.jnk <at> sivalik.com>
Cc: 47391 <at> debbugs.gnu.org, Emacs developers <emacs-devel <at> gnu.org>
Subject: Re: bug#47391: 27.2; static list return from function and nconc
Date: Thu, 25 Mar 2021 16:28:26 +0100
Am Do., 25. März 2021 um 16:23 Uhr schrieb Rajeev Narang via Bug
reports for GNU Emacs, the Swiss army knife of text editors
<bug-gnu-emacs <at> gnu.org>:
>
> (defun fn () '(1 2))
>
> (nconc (fn) '(3))
> -> (1 2 3)

This is undefined behavior/unsupported. The value that (fn) evaluates
to is immutable, but nconc mutates it.

>
> (nconc (fn) '(3))
> -> (1 2 3 3) ? should be (1 2 3)
>
> If this is not a bug, then hfy-invisible, hfy-face-to-style-i may need to be fixed.

If they use this pattern, then they should indeed be fixed.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47391; Package emacs. (Thu, 25 Mar 2021 15:44:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: Rajeev Narang <rajeev.jnk <at> sivalik.com>, 47391 <at> debbugs.gnu.org,
 Emacs developers <emacs-devel <at> gnu.org>
Subject: Re: bug#47391: 27.2; static list return from function and nconc
Date: Thu, 25 Mar 2021 11:43:20 -0400
>> (defun fn () '(1 2))
>>
>> (nconc (fn) '(3))
>> -> (1 2 3)
>
> This is undefined behavior/unsupported. The value that (fn) evaluates
> to is immutable, but nconc mutates it.
>
>>
>> (nconc (fn) '(3))
>> -> (1 2 3 3) ? should be (1 2 3)
>>
>> If this is not a bug, then hfy-invisible, hfy-face-to-style-i may need to be fixed.
>
> If they use this pattern, then they should indeed be fixed.

Note that in the code above, we usually consider that the bug is not in
`fn` but in the use of `nconc` on a list which the code doesn't know can
safely be mutated (it should hence use `append` instead).


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47391; Package emacs. (Thu, 25 Mar 2021 15:56:01 GMT) Full text and rfc822 format available.

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

From: Gregory Heytings <gregory <at> heytings.org>
To: Rajeev Narang <rajeev.jnk <at> sivalik.com>
Cc: 47391 <at> debbugs.gnu.org, emacs-devel <at> gnu.org
Subject: Re: bug#47391: 27.2; static list return from function and nconc
Date: Thu, 25 Mar 2021 15:55:37 +0000
[Message part 1 (text/plain, inline)]
>
> (defun fn () '(1 2))
>
> (nconc (fn) '(3))
> -> (1 2 3)
>
> (nconc (fn) '(3))
> -> (1 2 3 3) ? should be (1 2 3)
>

Why do you think this is a bug?  The docstring of "nconc" says: 
"Concatenate any number of lists by _altering_ them.  Only the last 
argument is not altered, and need not be a list."  (append (fn) '(3)) 
always returns (1 2 3).

>
> If this is not a bug, then hfy-invisible, hfy-face-to-style-i may need 
> to be fixed.
>

Does the attached patch fix the bug you see?
[0001-lisp-htmlfontify.el-hfy-invisible-Return-a-new-list-.patch (text/x-diff, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47391; Package emacs. (Thu, 25 Mar 2021 15:59:02 GMT) Full text and rfc822 format available.

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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Gregory Heytings <gregory <at> heytings.org>
Cc: Rajeev Narang <rajeev.jnk <at> sivalik.com>, 47391 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#47391: 27.2; static list return from function and nconc
Date: Thu, 25 Mar 2021 11:58:48 -0400
> Does the attached patch fix the bug you see?

I pushed another one instead which avoids `nconc` instead of trying to
allow it.


        Stefan





Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47391; Package emacs. (Thu, 25 Mar 2021 16:04:02 GMT) Full text and rfc822 format available.

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

From: Gregory Heytings <gregory <at> heytings.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Rajeev Narang <rajeev.jnk <at> sivalik.com>, 47391 <at> debbugs.gnu.org,
 emacs-devel <at> gnu.org
Subject: Re: bug#47391: 27.2; static list return from function and nconc
Date: Thu, 25 Mar 2021 16:03:23 +0000
>> Does the attached patch fix the bug you see?
>
> I pushed another one instead which avoids `nconc` instead of trying to 
> allow it.
>

Okay.  Apparently htmlfontify.el was written with the idea of mutating 
lists returned by functions (for efficiency reasons?), hfy-invisible was 
an exception.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#47391; Package emacs. (Sun, 28 Mar 2021 13:22:01 GMT) Full text and rfc822 format available.

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

From: Lars Ingebrigtsen <larsi <at> gnus.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: Gregory Heytings <gregory <at> heytings.org>, 47391 <at> debbugs.gnu.org,
 Rajeev Narang <rajeev.jnk <at> sivalik.com>
Subject: Re: bug#47391: 27.2; static list return from function and nconc
Date: Sun, 28 Mar 2021 15:21:21 +0200
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:

>> Does the attached patch fix the bug you see?
>
> I pushed another one instead which avoids `nconc` instead of trying to
> allow it.

I guess this means that this bug has been fixed?  So I'm closing this
report now.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Added tag(s) fixed. Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 28 Mar 2021 13:22:02 GMT) Full text and rfc822 format available.

bug marked as fixed in version 28.1, send any further explanations to 47391 <at> debbugs.gnu.org and Rajeev Narang <rajeev.jnk <at> sivalik.com> Request was from Lars Ingebrigtsen <larsi <at> gnus.org> to control <at> debbugs.gnu.org. (Sun, 28 Mar 2021 13:22:03 GMT) Full text and rfc822 format available.

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 26 Apr 2021 11:24:09 GMT) Full text and rfc822 format available.

This bug report was last modified 3 years and 1 day ago.

Previous Next


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