GNU bug report logs - #20914
eieio/slot/group

Previous Next

Package: emacs;

Reported by: Pierre Lorenzon <devel <at> pollock-nageoire.net>

Date: Sun, 28 Jun 2015 06:13:01 UTC

Severity: normal

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

Bug is archived. No further changes may be made.

Full log


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

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Pierre Lorenzon <devel <at> pollock-nageoire.net>
Cc: 20914 <at> debbugs.gnu.org
Subject: Re: bug#20914: eieio/slot/group
Date: Tue, 30 Jun 2015 14:09:20 -0400
> The problem comes from use of `copy-sequence' in
> `eieio-copy-parents-into-subclass' function of eieio-core. this
> copy is not reccursive as explained in code comment but it
> should be ! There's a joined patch that fixes the bug.

Thanks for the investigation.  I think the fix should be
applied deeper.  Can you confirm that the patch below works for you
as well?


        Stefan


diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el
index ed0639b..2e9bdde 100644
--- a/lisp/emacs-lisp/cl-preloaded.el
+++ b/lisp/emacs-lisp/cl-preloaded.el
@@ -195,7 +195,7 @@
                (:constructor nil)
                (:constructor cl--make-slot-descriptor
                 (name &optional initform type props))
-               (:copier cl--copy-slot-descriptor))
+               (:copier nil))
   ;; FIXME: This is actually not used yet, for circularity reasons!
   "Descriptor of structure slot."
   name                                  ;Attribute name (symbol).
@@ -205,6 +205,11 @@
   ;;  :documentation, :protection, :custom, :label, :group, :printer.
   (props nil :type alist))
 
+(defun cl--copy-slot-descriptor (slot)
+  (let ((new (copy-sequence slot)))
+    (cl-callf copy-sequence (cl--slot-descriptor-props new))
+    new))
+
 (cl-defstruct (cl--class
                (:constructor nil)
                (:copier nil))




This bug report was last modified 10 years and 15 days ago.

Previous Next


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