From 3d08118a1df11b9c567768d4cf086da9763ba46f Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 2 Dec 2011 14:51:29 -0700 Subject: [PATCH] fix another way that `racket/gui' instances can leak original commit: 745c4b64703cf5fb47e44781b1aac6af41e04fd8 --- collects/tests/gracket/draw-mem.rkt | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/collects/tests/gracket/draw-mem.rkt b/collects/tests/gracket/draw-mem.rkt index 4b914095..c5f16197 100644 --- a/collects/tests/gracket/draw-mem.rkt +++ b/collects/tests/gracket/draw-mem.rkt @@ -2,17 +2,22 @@ ;; Check for a leak via multiple `racket/draw' instantiations. -(define-values (incs m) - (for/fold ([incs 0] [prev-mem 0]) ([i 10]) - (parameterize ([current-namespace (make-base-namespace)]) +(define my-ns-channel (make-parameter #f)) + +(define-values (incs m ns) + (for/fold ([incs 0] [max-mem 0] [ns #f]) ([i 10]) + (define ns (make-base-namespace)) + (parameterize ([current-namespace ns] + [my-ns-channel ns]) (dynamic-require 'racket/draw #f)) (collect-garbage) (sync (system-idle-evt)) (collect-garbage) (let ([m (current-memory-use)]) - (if (m . > . (+ prev-mem (* 100 1024))) - (values (add1 incs) m) - (values incs m))))) + (printf "~s\n" m) + (if (m . > . max-mem) + (values (add1 incs) m 'ns) + (values incs max-mem 'ns))))) (unless (incs . < . 5) (error "multiple `racket/draw' instantiations seem to accumulate memory"))