From 11939df0f2851164425dd710b41a5311b64d3879 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Sat, 18 Apr 2015 07:03:35 +0100 Subject: [PATCH] fix `custodian-managed-list` for weakly held objects --- racket/src/racket/src/thread.c | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/racket/src/racket/src/thread.c b/racket/src/racket/src/thread.c index e51c0d5a28..ae282e69c8 100644 --- a/racket/src/racket/src/thread.c +++ b/racket/src/racket/src/thread.c @@ -1626,16 +1626,18 @@ static Scheme_Object *custodian_to_list(int argc, Scheme_Object *argv[]) for (i = m->count, j = 0; i--; ) { if (m->boxes[i]) { o = xCUSTODIAN_FAM(m->boxes[i]); - - type = SCHEME_TYPE(o); - ex = extractors[type]; - if (ex) { - o = ex(o); - } if (o) { - hold[j] = o; - j++; + type = SCHEME_TYPE(o); + ex = extractors[type]; + if (ex) { + o = ex(o); + } + + if (o) { + hold[j] = o; + j++; + } } } }