From db9ae63828aa9ef37e1c323bd8dc77988b518c99 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Fri, 11 Nov 2011 14:42:51 -0700 Subject: [PATCH] fix leak in `racket/draw' instantiation original commit: 75dd61ebc36ecca41d591c81c290b0e776cef36b --- collects/tests/gracket/draw-mem.rkt | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 collects/tests/gracket/draw-mem.rkt diff --git a/collects/tests/gracket/draw-mem.rkt b/collects/tests/gracket/draw-mem.rkt new file mode 100644 index 00000000..4b914095 --- /dev/null +++ b/collects/tests/gracket/draw-mem.rkt @@ -0,0 +1,19 @@ +#lang racket + +;; 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)]) + (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))))) + +(unless (incs . < . 5) + (error "multiple `racket/draw' instantiations seem to accumulate memory")) +