Commit 4e75d4d0 by Francois-Rene Rideau

Preserve syntax tables in perform define-op

ASDF 3.3.0 introduced an unwanted discrepancy from 3.2.1, whereby
the readtable and print-pprint-dispatch table were not preserved
while loading a .asd file, which caused bad libraries like puri
to try to corrupt the standard readtable when loaded as
defsystem-depends-on dependency or equivalent.
See bug report on the asdf-devel mailing-list.
The real solution is to redo the syntax-control branch.
parent 9a4203dc
......@@ -89,14 +89,16 @@
(assert (equal (coerce-name s) (primary-system-name s)))
(nest
(if-let ((pathname (first (input-files o s)))))
(let ((readtable *readtable*) ;; save outer syntax tables. TODO: proper syntax-control
(print-pprint-dispatch *print-pprint-dispatch*)))
(with-standard-io-syntax)
(let ((*print-readably* nil)
;; Note that our backward-compatible *readtable* is
;; a global readtable that gets globally side-effected. Ouch.
;; Same for the *print-pprint-dispatch* table.
;; We should do something about that for ASDF3 if possible, or else ASDF4.
(*readtable* *readtable*)
(*print-pprint-dispatch* *print-pprint-dispatch*)
(*readtable* readtable) ;; restore inside syntax table
(*print-pprint-dispatch* print-pprint-dispatch)
(*package* (find-package :asdf-user))
(*default-pathname-defaults*
;; resolve logical-pathnames so they won't wreak havoc in parsing namestrings.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment