From 233df487094bd1f84f018937bb13e603f78840ee Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Mon, 15 Jun 2009 21:44:54 +0000 Subject: [PATCH] Fixed module-specs->non-lib-paths which was very broken in several different ways (PR10305) svn: r15180 --- collects/scheme/sandbox.ss | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/collects/scheme/sandbox.ss b/collects/scheme/sandbox.ss index 5e979cd52f..9b0e37b50b 100644 --- a/collects/scheme/sandbox.ss +++ b/collects/scheme/sandbox.ss @@ -236,8 +236,8 @@ (define (module-specs->non-lib-paths mods) (define (lib? x) (if (module-path-index? x) - (let-values ([(m base) (module-path-index-split x)]) (lib? m)) - (and (pair? x) (eq? 'lib (car x))))) + (let-values ([(m base) (module-path-index-split x)]) (lib? m)) + (or (symbol? x) (and (pair? x) (eq? 'lib (car x)))))) ;; turns a module spec to a simple one (except for lib specs) (define (simple-modspec mod) (cond [(and (pair? mod) (eq? 'lib (car mod))) #f] @@ -253,25 +253,22 @@ [(and (eq? 'prefix (car mod)) (pair? (cddr mod))) (simple-modspec (caddr mod))] [else #f])) - (let loop ([todo (filter values (map simple-modspec mods))] + (let loop ([todo (filter-map simple-modspec mods)] [r '()]) (cond - [(null? todo) r] - [(member (car todo) r) (loop (cdr todo) r)] - [else - (let ([path (car todo)]) - (loop (filter values - (map (lambda (i) - (simplify-path* (resolve-module-path-index i path))) - (filter (lambda (i) - (and (module-path-index? i) (not (lib? i)))) - (apply append - (call-with-values - (lambda () - (module-compiled-imports - (get-module-code (car todo)))) - list))))) - (cons path r)))]))) + [(null? todo) r] + [(member (car todo) r) (loop (cdr todo) r)] + [else + (let ([path (car todo)]) + (loop (append (cdr todo) + (filter-map + (lambda (i) + (simplify-path* (resolve-module-path-index i path))) + (filter (lambda (i) + (and (module-path-index? i) (not (lib? i)))) + (append-map cdr (module-compiled-imports + (get-module-code path)))))) + (cons path r)))]))) ;; Resources ----------------------------------------------------------------