Karsten Poeck <karsten.poeck@...> writes:
> (defstruct foo
> (bar #P"c:/test/"))
You can kludge around this for now by doing
(setf sb-fasl::*dump-only-valid-structures* nil)
As for a proper fix, I think this is it, but need to think more to
(defun fasl-constant-already-dumped-p (constant file)
(and (gethash constant (fasl-output-eq-table file)) t))
The old definition also checks the valid objects -table, which
seems to be CMUCL inherited code, along with the comment:
;;; Return T iff CONSTANT has not already been dumped. It's been
;;; dumped if it's in the EQ table.
I'm inclined to think the comment is right and the code is wrong,
as if EMIT-MAKE-LOAD-FORM doesn't do anything if the constant
appears already dumped, and marks the it valid in the approriate
table for the :SB-JUST-DUMP-IT-NORMALLY case, so after the
DEFSTRUCT-DESCRIPTION has been marked valid, the slot-descriptions
don't get touched anymore.
This doesn't happen with most structures because they currently take
the fopcompile path, which binds the *dump-only-valid-structures* to
NIL, but the pathname in the initform position inhibits the
-- Nikodemus Schemer: "Buddha is small, clean, and serious."
Lispnik: "Buddha is big, has hairy armpits, and laughs."