Package: emacs;
Reported by: Gemini Lasswell <gazally <at> runbox.com>
Date: Fri, 4 Nov 2016 15:58:01 UTC
Severity: normal
Found in version 26.0.50
Done: Johan Bockgård <bojohan <at> gnu.org>
Bug is archived. No further changes may be made.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Gemini Lasswell <gazally <at> runbox.com> To: bug-gnu-emacs <at> gnu.org Subject: 26.0.50; alist copied by copy-tree shares structure with original Date: Fri, 04 Nov 2016 08:51:36 -0700
copy-tree will recursively copy structures inside of vectors if you pass it a non-nil vecp argument. But it fails to recursively copy structures inside of vectors in alists constructed with dotted pairs. To reproduce, enter the following code into *scratch* and M-x eval-buffer RET: (defun my-copy-tree-bug () (let* ((vec-ab (vector 'a 'b)) (vec-abcd (vector vec-ab (vector 'c 'd))) (vec-alist (list (list 'key vec-abcd))) (vec-alist-copy (copy-tree vec-alist t)) (vec-dotted-alist (list (cons 'key vec-abcd))) (vec-dotted-alist-copy (copy-tree vec-dotted-alist t))) (message "Before:") (message " Original: %S \tCopy: %S" vec-alist vec-alist-copy) (message " Original: %S \tCopy: %S" vec-dotted-alist vec-dotted-alist-copy) (aset vec-ab 0 'foo) (message "After change to original:") (message " Original: %S \tCopy: %S" vec-alist vec-alist-copy) (message " Original: %S \tCopy: %S" vec-dotted-alist vec-dotted-alist-copy))) (my-copy-tree-bug) Result: The copy is independent of the original of the alist constructed with a list but not independent of the original of the alist constructed with a dotted pair. In GNU Emacs 26.0.50.23 (x86_64-apple-darwin15.6.0, NS appkit-1404.47 Version 10.11.6 (Build 15G1004)) of 2016-11-03 built on rainbow.local Repository revision: 1a2e210db7d85d8cf5f7205a0e4acc49f2ac6e67 Windowing system distributor 'Apple', version 10.3.1404 Recent messages: Original: ((key . [(foo b) (c d)])) Copy: ((key . [(foo b) (c d)])) " Original: ((key . [(foo b) (c d)])) Copy: ((key . [(foo b) (c d)]))" my-copy-tree-bug Before: Original: ((key [[a b] [c d]])) Copy: ((key [[a b] [c d]])) Original: ((key . [[a b] [c d]])) Copy: ((key . [[a b] [c d]])) After change to original: Original: ((key [[foo b] [c d]])) Copy: ((key [[a b] [c d]])) Original: ((key . [[foo b] [c d]])) Copy: ((key . [[foo b] [c d]])) " Original: ((key . [[foo b] [c d]])) Copy: ((key . [[foo b] [c d]]))" Configured using: 'configure --with-ns --disable-ns-self-contained' Configured features: JPEG RSVG IMAGEMAGICK NOTIFY ACL GNUTLS LIBXML2 ZLIB TOOLKIT_SCROLL_BARS NS Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Emacs-Lisp Minor modes in effect: global-undo-tree-mode: t undo-tree-mode: t diff-auto-refine-mode: t ivy-mode: t global-flycheck-mode: t flycheck-mode: t buffer-face-mode: t yas-global-mode: t yas-minor-mode: t global-company-mode: t company-mode: t pyvenv-mode: t shell-dirtrack-mode: t nameless-mode: t beacon-mode: t rainbow-mode: t column-enforce-mode: t volatile-highlights-mode: t region-state-mode: t ws-butler-global-mode: t ws-butler-mode: t show-smartparens-global-mode: t show-smartparens-mode: t smartparens-global-mode: t smartparens-global-strict-mode: t smartparens-strict-mode: t smartparens-mode: t which-key-mode: t modalka-mode: t recentf-mode: t global-auto-revert-mode: t winner-mode: t display-time-mode: t savehist-mode: t override-global-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-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 size-indication-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message rfc822 mml mml-sec epa derived epg gnus-util rmail rmail-loaddefs mailabbrev gmm-utils mailheader tabify add-log log-view pcvs-util vc vc-dispatcher debug origami origami-parsers ielm pp hl-line hideshow imenu-list imenu visual-regexp highlight-symbol disp-table fill-column-indicator undo-tree diff dired-aux expand-region text-mode-expansions cc-mode-expansions python-el-fgallina-expansions er-basic-expansions expand-region-core expand-region-custom dash-at-point cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs eieio-opt speedbar sb-image ezimage dframe tcover-2 testcover edebug comment-dwim-2 vc-git diff-mode colir flx dired dired-loaddefs counsel esh-util swiper ivy delsel ffap flycheck find-func rx face-remap guess-style smtpmail sendmail mail-utils company-capf company-files yasnippet highlight-indentation flymake company help-fns radix-tree elpy pyvenv elpy-refactor smartparens-python python tramp-sh tramp tramp-compat tramp-loaddefs trampver shell pcomplete format-spec json map grep compile files-x cus-edit virtualenvwrapper gud comint nameless lisp-mnt ace-window avy beacon smex ido deft debbugs soap-client mm-decode mm-bodies mm-encode url-http tls gnutls url-auth mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm subr-x puny url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap warnings rng-xsd rng-dt rng-util xsd-regexp xml rainbow-mode ansi-color color s hydra lv column-enforce-mode etags xref project volatile-highlights region-state ws-butler smartparens-config smartparens thingatpt dash which-key modalka quail smart-mode-line-dark-theme smart-mode-line advice rich-minority whiteboard-theme classic-theme recentf tree-widget wid-edit autorevert filenotify winner ring time cus-start cus-load savehist cap-words superword subword use-package diminish bind-key easy-mmode finder-inf edmacro kmacro info cl package epg-config url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache url-vars seq byte-opt gv bytecomp byte-compile cl-extra help-mode easymenu cconv cl-loaddefs pcase cl-lib time-date mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/ns-win ns-win ucs-normalize term/common-win tool-bar dnd fontset image regexp-opt fringe tabulated-list newcomment elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core term/tty-colors frame 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 charscript case-table epa-hook jka-cmpr-hook help simple abbrev obarray minibuffer 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 kqueue cocoa ns multi-tty make-network-process emacs) Memory information: ((conses 16 755982 118671) (symbols 48 47054 1) (miscs 40 3486 3707) (strings 32 120683 149916) (string-bytes 1 3559912) (vectors 16 77911) (vector-slots 8 1922399 95872) (floats 8 1077 1577) (intervals 56 28644 4185) (buffers 976 37))
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.