aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lisp/emacs-lisp/eieio-base.el25
1 files changed, 17 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/eieio-base.el b/lisp/emacs-lisp/eieio-base.el
index af240794e38..5ff8574d9a9 100644
--- a/lisp/emacs-lisp/eieio-base.el
+++ b/lisp/emacs-lisp/eieio-base.el
@@ -360,19 +360,28 @@ Second, any text properties will be stripped from strings."
360 ((hash-table-p proposed-value) 360 ((hash-table-p proposed-value)
361 (maphash 361 (maphash
362 (lambda (key value) 362 (lambda (key value)
363 (when (class-p (car-safe value)) 363 (cond ((class-p (car-safe value))
364 (setf (gethash key proposed-value) 364 (setf (gethash key proposed-value)
365 (eieio-persistent-convert-list-to-object 365 (eieio-persistent-convert-list-to-object
366 value)))) 366 value)))
367 ((and (consp value)
368 (eq (car value) 'quote))
369 (setf (gethash key proposed-value)
370 (cadr value)))))
367 proposed-value) 371 proposed-value)
368 proposed-value) 372 proposed-value)
369 373
370 ((vectorp proposed-value) 374 ((vectorp proposed-value)
371 (dotimes (i (length proposed-value)) 375 (dotimes (i (length proposed-value))
372 (when (class-p (car-safe (aref proposed-value i))) 376 (let ((val (aref proposed-value i)))
373 (aset proposed-value i 377 (cond ((class-p (car-safe val))
374 (eieio-persistent-convert-list-to-object 378 (aset proposed-value i
375 (aref proposed-value i))))) 379 (eieio-persistent-convert-list-to-object
380 (aref proposed-value i))))
381 ((and (consp val)
382 (eq (car val) 'quote))
383 (aset proposed-value i
384 (cadr val))))))
376 proposed-value) 385 proposed-value)
377 386
378 ((stringp proposed-value) 387 ((stringp proposed-value)