This is a change to paper over a bug elsewhere in the system that threatens the release.

Specifically, when there is an error in the namespace require (say if one of the teachpack
files gets corrupted (because you use a script that monkeys around in the installation, say,
and things go wrong)) then the first-opened method does not return normally, but raises
an exception. This, so far, is not a problem, but it appears that there is a bug in the
implementation of the drracket repl io ports that causes them to deadlock when flushing
the error port under certain conditions (I'm not sure what is really going on with this bug,
but I am observing a call to flush that fails to return) and the error-display-handler
for the teaching languages flushes the output port.

This change just avoids printing the error and so the error display handler is not called
in the fragile state. This change goes back to exactly what was happening in 5.0.2,
at least as far as the teaching language's first-opened method is concerned.

So, if this seems okay, I'd like to suggest it be included in the release.
This commit is contained in:
Robby Findler 2011-02-14 10:22:21 -06:00
parent 1a5f41fd71
commit 25adab8cbb

View File

@ -439,7 +439,8 @@
(define/override (first-opened settings)
(for ([tp (in-list (htdp-lang-settings-teachpacks settings))])
(namespace-require/constant tp)))
(with-handlers ((exn:fail? void))
(namespace-require/constant tp))))
(inherit get-module get-transformer-module get-init-code
use-namespace-require/copy?)