X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Flow.lisp;h=ea468f4aaf2ddecdc0a67699e84e73e64a5ad8d7;hb=f705c517d8606a9a72edd11a96725f9c4e4be93d;hp=34537ac7d6ab1fde3402236e8f18bd5bd8529664;hpb=dc86450e18fb7b90bf6be7d8df8b8ebcb0d090f9;p=sbcl.git diff --git a/src/pcl/low.lisp b/src/pcl/low.lisp index 34537ac..ea468f4 100644 --- a/src/pcl/low.lisp +++ b/src/pcl/low.lisp @@ -219,12 +219,12 @@ (defun intern-fun-name (name) (cond ((symbolp name) name) ((listp name) - (intern (let ((*package* *pcl-package*) - (*print-case* :upcase) - (*print-pretty* nil) - (*print-gensym* t)) - (format nil "~S" name)) - *pcl-package*)))) + (let ((*package* *pcl-package*) + (*print-case* :upcase) + (*print-pretty* nil) + (*print-gensym* t)) + (format-symbol *pcl-package* "~S" name))))) + ;;; FIXME: probably no longer needed after init (defmacro precompile-random-code-segments (&optional system) @@ -351,9 +351,11 @@ (defun structure-slotd-reader-function (slotd) (fdefinition (dsd-accessor-name slotd))) -(defun structure-slotd-writer-function (slotd) - (unless (dsd-read-only slotd) - (fdefinition `(setf ,(dsd-accessor-name slotd))))) +(defun structure-slotd-writer-function (type slotd) + (if (dsd-read-only slotd) + (let ((dd (get-structure-dd type))) + (coerce (slot-setter-lambda-form dd slotd) 'function)) + (fdefinition `(setf ,(dsd-accessor-name slotd))))) (defun structure-slotd-type (slotd) (dsd-type slotd))