all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#40692: 28.0.50; Constant list modified inside  function
@ 2020-04-17 23:45 Ivan Andrus
  2020-04-18  3:05 ` Ivan Andrus
  2020-04-18  9:18 ` Štěpán Němec
  0 siblings, 2 replies; 6+ messages in thread
From: Ivan Andrus @ 2020-04-17 23:45 UTC (permalink / raw)
  To: 40692

Starting from Emacs -Q (I am building off of trunk, but my brother verified the same behavior in 26.3), if I evaluate the following code I get an error the second time I call withdraw.

   (defmacro show (var)
     `(message  ,(format "%S %%S" var) ,var))

   (defun my-test-fun (amount params)
     (when (memq 'tricked-ya params)
       (error "What happened here?"))
     (show amount)
     (show params)
     (setcdr (cdr params) (list 'tricked-ya))
     (show params))

   (defun fun-withdraw (amount)
     (my-test-fun amount
                  `((amount . , amount)
                    (const . some-constant))))

   (fun-withdraw 12)

   (fun-withdraw 12) ;; The second time it's called it will error because the "constant" list was modified.


I believe this is the root cause of a bug in magit/forge https://github.com/magit/forge/issues/267 in which all subsequent pull requests created have the same name.  The maintainer of magit/forge (tarsius) was unable to reproduce that bug, so I tried my hand at creating a minimal test case, and I was able to get it down to this.

Now, I understand reference semantics of lists in general, but it seems like this should be different.  If this behavior is intentional, what's the best way to for creation of a new list every time so that functions using the alist don't have to worry about not changing the list?

-Ivan Andrus


In GNU Emacs 28.0.50 (build 18, x86_64-apple-darwin18.7.0, NS appkit-1671.60 Version 10.14.6 (Build 18G4032))
of 2020-04-10 built on iandrus-macOS
Repository revision: 965390ca5f206c6358014574fe5140ba40850391 -- some local changes on top of e18c24b35a7cf9bb1b91288b706fa448ed28a7c2
Repository branch: master
Windowing system distributor 'Apple', version 10.3.1671
System Description:  Mac OS X 10.14.6

Configured using:
'configure
PKG_CONFIG_PATH=/opt/X11/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig
--with-sound=yes --with-ns --with-modules --with-file-notification=yes
--enable-gcc-warnings=warn-only --with-xpm --with-jpeg --with-tiff
--with-gif --with-png --with-rsvg --with-xml2 --with-imagemagick
--with-json --with-xft --with-libotf --with-gnutls=no --with-makeinfo
--with-libgmp'

Configured features:
RSVG IMAGEMAGICK GLIB NOTIFY KQUEUE ACL LIBXML2 ZLIB TOOLKIT_SCROLL_BARS
XIM NS MODULES THREADS JSON PDUMPER GMP

Important settings:
 value of $LANG: en_US.UTF-8
 locale-coding-system: utf-8-unix





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2021-08-29 22:18 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-04-17 23:45 bug#40692: 28.0.50; Constant list modified inside function Ivan Andrus
2020-04-18  3:05 ` Ivan Andrus
2020-04-18  9:18 ` Štěpán Němec
2020-04-18 22:49   ` Michael Heerdegen
2020-04-19  7:08     ` Štěpán Němec
2021-08-29 22:18       ` Lars Ingebrigtsen

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.