[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug in 7/20/88 PCL

There is a bug in the 7/20/88 PCL which will prevent slot-value from
working in certain methods where there are calls to slot-value with more
than one slot-name.

The following patch should be made to the file vector.lisp.  You can
load this function into an existing PCL.  You don't have to reload PCL,
or recompile or reload your code.

;from vector.lisp
(defun pv-access-trap (instance offset isl &optional (new-value nil nvp))
  (let ((slot-name nil)
	(i 0))
    (dolist (per-class-slots (cdr isl))
      (dolist (slot per-class-slots)
	(when (= i offset)
	  (return (setq slot-name slot)))
	(incf i)))
    (when (null slot-name)
      (error "Internal Error:~@
              Unable to determine the name of the slot from the PV-OFFSET~@
              and the ISL.  This results from inconsistency between the~@
              PV-OFFSET this access was told to use and the ISL for the~@
    (if nvp
	(put-slot-using-class (class-of instance) instance slot-name new-value)
	(slot-value-using-class (class-of instance) instance slot-name))))