GNU bug report logs -
#22840
25.0.91; eieio clone creates objects with wrong name
Previous Next
Reported by: Vitalie Spinu <spinuvit <at> gmail.com>
Date: Sun, 28 Feb 2016 19:15:02 UTC
Severity: normal
Found in version 25.0.91
Fixed in version 26.2.50
Done: Vitalie Spinu <spinuvit <at> gmail.com>
Bug is archived. No further changes may be made.
Full log
View this message in rfc822 format
The problem seems to be because of the typo in clone for named objects. It
should be setting name to "nobj" but instead it sets to the prototype "obj":
╭──────── #475 ─ /lisp/emacs-lisp/eieio-base.el ──
│
│ (cl-defmethod clone ((obj eieio-named) &rest params)
│ "Clone OBJ, initializing `:parent' to OBJ.
│ All slots are unbound, except those initialized with PARAMS."
│ (let* ((newname (and (stringp (car params)) (pop params)))
│ (nobj (apply #'cl-call-next-method obj params))
│ (nm (slot-value obj 'object-name)))
│ (eieio-oset obj 'object-name
│ (or newname
│ (save-match-data
│ (if (and nm (string-match "-\\([0-9]+\\)" nm))
│ (let ((num (1+ (string-to-number
│ (match-string 1 nm)))))
│ (concat (substring nm 0 (match-beginning 0))
│ "-" (int-to-string num)))
│ (concat nm "-1")))))
│ nobj))
╰──────── #491 ─
Vitalie
>> On Sun, Feb 28 2016 20:14, Vitalie Spinu wrote:
> Hi,
> With new "named" class I encounter the following problem:
> (defclass AA (eieio-instance-inheritor eieio-named) ()
> "Soeme class")
> (setq aa (AA "namedA"))
> (eieio-object-name aa)
> ;"#<AA namedA>"
> (eieio-object-name (clone aa "namedB"))
> ;"#<AA namedA>"
> (eieio-object-name (clone aa "namedC"))
> ;"#<AA namedB>"
> In other words clone memorises a name from the previous clone and uses
> that during the object creation.
> Vitalie
> In GNU Emacs 25.0.91.1 (x86_64-unknown-linux-gnu, GTK+ Version 3.16.7)
> of 2016-02-28 built on galago
> Repository revision: 52f64cc2e74ab83752c8f2d37ef0fc6df5ef8b30
> Windowing system distributor 'The X.Org Foundation', version 11.0.11702000
> System Description: Ubuntu 15.10
This bug report was last modified 6 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.