X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpcl%2Flow.lisp;h=ea468f4aaf2ddecdc0a67699e84e73e64a5ad8d7;hb=28dcf682ef2a3c80b7bcdda00787dbb5e3893abe;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))