changeset 178:057e8ab413f9

variable initialisation in make-sequence-like darcs-hash:20080630091021-1f211-b6290a47a46363652887771c60c68b8eb6567c36.gz
author d.mullensiefen <d.mullensiefen@gold.ac.uk>
date Mon, 30 Jun 2008 10:10:21 +0100
parents e5de0895d843
children 88089258e08d
files base/methods.lisp
diffstat 1 files changed, 6 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/base/methods.lisp	Thu Mar 13 11:26:52 2008 +0000
+++ b/base/methods.lisp	Mon Jun 30 10:10:21 2008 +0100
@@ -463,13 +463,15 @@
   preserved from the source sequence (except onset and duration,
   which are calculated afresh)."
   (declare (ignore length initial-element initial-contents iep icp))
-  (let ((new-sequence (call-next-method)))
+  (let ((new-sequence (call-next-method)) (slot-name))
     ;; Get timing information
     (setf new-sequence (%recompute-standard-composition-period new-sequence))
     (dolist (slotd (sb-mop:class-slots (class-of new-sequence)) new-sequence)
-      (unless (or (equal (sb-mop:slot-definition-name slotd) '%data)
-		  (equal (sb-mop:slot-definition-name slotd) 'time)
-		  (equal (sb-mop:slot-definition-name slotd) 'interval))
+      (setf slot-name (sb-mop:slot-definition-name slotd))
+      (unless (or (equal slot-name '%data)
+               (equal slot-name 'time)
+               (equal slot-name 'interval)
+               (not (slot-boundp o slot-name)))
         (setf (sb-mop:slot-value-using-class (class-of new-sequence)
 					     new-sequence
 					     slotd)