From 57e19c9d8f4a8d4107eb1ebb8b628e35a58d081b Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Wed, 8 Jan 2020 06:05:11 -0700 Subject: [PATCH] repair a test for weak-hash iteration --- pkgs/racket-test-core/tests/racket/unsafe.rktl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/pkgs/racket-test-core/tests/racket/unsafe.rktl b/pkgs/racket-test-core/tests/racket/unsafe.rktl index b374ab4d59..843df1530f 100644 --- a/pkgs/racket-test-core/tests/racket/unsafe.rktl +++ b/pkgs/racket-test-core/tests/racket/unsafe.rktl @@ -830,8 +830,10 @@ (let () (define ht #f) - (let ([lst (build-list 10 add1)]) - (set! ht (make-weak-hash `((,lst . val))))) + ;; retain the list at first... + (define lst (build-list 10 add1)) + + (set! ht (make-weak-hash `((,lst . val)))) (define i (unsafe-weak-hash-iterate-first ht)) @@ -846,6 +848,10 @@ '((1 2 3 4 5 6 7 8 9 10) . val)) (test #t boolean? (unsafe-weak-hash-iterate-next ht i)) + ;; drop `lst` on next GC + (test #t list? lst) + (set! lst #f) + (unless (eq? 'cgc (system-type 'gc)) ;; collect key, everything should error (but not segfault) (collect-garbage)(collect-garbage)(collect-garbage)