From 012ef60cd545ba86af73bb90f1b9f23985497da4 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 27 Feb 2012 14:12:41 -0700 Subject: [PATCH] fix non-tail loop in parallel `raco setup' Deep recursion with too-few recognizable JIT frames caused trouble with `current-continuation-marks'. --- collects/setup/parallel-do.rkt | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/collects/setup/parallel-do.rkt b/collects/setup/parallel-do.rkt index 3933729fa9..7fbaf89d2f 100644 --- a/collects/setup/parallel-do.rkt +++ b/collects/setup/parallel-do.rkt @@ -425,16 +425,16 @@ (send/resp (list 'ERROR message))) (define (send/reportp message) (send/resp (list 'REPORT message))) - (with-handlers* ([exn:fail? (lambda (x) - (send/errorp (exn-message x)) - (loop (add1 i)))]) - (parameterize ([current-output-port out-str-port] - [current-error-port err-str-port]) - (let ([msg (pdo-recv)]) - (match msg - [(list 'DIE) (void)] - [_ (msg-proc msg send/successp send/errorp send/reportp) - (loop (add1 i))]))))))))))) + ((with-handlers* ([exn:fail? (lambda (x) + (send/errorp (exn-message x)) + (lambda () (loop (add1 i))))]) + (parameterize ([current-output-port out-str-port] + [current-error-port err-str-port]) + (let ([msg (pdo-recv)]) + (match msg + [(list 'DIE) void] + [_ (msg-proc msg send/successp send/errorp send/reportp) + (lambda () (loop (add1 i)))])))))))))))) (define-syntax (lambda-worker stx) (syntax-parse stx #:literals (match-message-loop)