Subject: bug#20270: 25.0.50; 'Invalid slot type: semanticdb-project-database-file, reference-directory, string, nil' with semantic-mode

From: Stefan Monnier <[email-masked]>
Date: Wed, 08 Apr 2015 17:24:51 -0400

>   new-emacs.sh -Q --eval '(semantic-mode t)' --eval '(find-file "test.c")'
[...]
>   Debugger entered--Lisp error: (invalid-slot-type semanticdb-project-database-file reference-directory string nil)

Duh, indeed.  I installed the patch below which should fix this blunder,

        Stefan

diff --git a/lisp/emacs-lisp/eieio-core.el b/lisp/emacs-lisp/eieio-core.el
index 6fd9c14..b0aa363 100644
--- a/lisp/emacs-lisp/eieio-core.el
+++ b/lisp/emacs-lisp/eieio-core.el
@@ -673,10 +673,9 @@ the new child class."
       (let ((pslots (eieio--class-slots pcv))
             (pinit (eieio--class-initarg-tuples pcv)))
         (dotimes (i (length pslots))
-          (eieio--add-new-slot newc (cl--copy-slot-descriptor (aref pslots i))
-                               (car-safe (car pinit)) nil nil sn)
-          ;; Increment each value.
-          (setq pinit (cdr pinit))
+	  (let* ((sd (cl--copy-slot-descriptor (aref pslots i)))
+                 (init (car (rassq (cl--slot-descriptor-name sd) pinit))))
+	    (eieio--add-new-slot newc sd init nil nil sn))
           )) ;; while/let
       ;; Now duplicate all the class alloc slots.
       (let ((pcslots (eieio--class-class-slots pcv)))