catch sxref failures and report as warnings when loading help data

svn: r8063
This commit is contained in:
Matthew Flatt 2007-12-19 15:36:35 +00:00
parent 19a6edc664
commit b78f8acb50
4 changed files with 17 additions and 7 deletions

View File

@ -40,7 +40,9 @@
[ci (send renderer collect null null)])
(for-each (lambda (src)
(parameterize ([current-namespace (namespace-anchor->empty-namespace here)])
(send renderer deserialize-info (src) ci)))
(let ([v (src)])
(when v
(send renderer deserialize-info v ci)))))
sources)
(make-xrefs renderer (send renderer resolve null null ci))))

View File

@ -401,12 +401,12 @@ first is a timeout value in seconds, and the second is a memory limit
in megabytes. Either one can be @scheme[#f] for disabling the
corresponding limit; alternately, the parameter can be set to
@scheme[#f] to disable all limits (in case more are available in
future versions).
future versions). The default is @scheme[(list 30 20)].
When limits are set, @scheme[call-with-limits] (see below) is wrapped
around each use of the evaluator, so consuming too much time or memory
results in an exception. You can change the limits of a running
evaluator using @scheme[set-eval-limits].}
results in an exception. Change the limits of a running evaluator
using @scheme[set-eval-limits].}
@; ----------------------------------------------------------------------

View File

@ -27,7 +27,8 @@ by @scheme[load-xref], @scheme[#f] otherwise.}
Creates a cross-reference record given a list of functions that each
produce a serialized information obtained from @xmethod[render%
serialize-info].
serialize-info]. If a @scheme[sources] element produces @scheme[#f],
its result is ignored.
Since the format of serialized information is specific to a rendering
class, the optional @scheme[using-render%] argument accepts the

View File

@ -41,7 +41,14 @@
dirs)))])
(set! cached-xref (load-xref (map (lambda (dest)
(lambda ()
(let ([r (with-input-from-file dest read)])
(cadr r))))
(with-handlers ([exn:fail? (lambda (exn)
(fprintf (current-error-port)
"WARNING: ~a\n"
(if (exn? exn)
(exn-message exn)
(format "~e" exn)))
#f)])
(let ([r (with-input-from-file dest read)])
(cadr r)))))
dests)))
cached-xref))))