From 7b604f37c22bd02d60f388f47b98f7b01b3a065c Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Mon, 25 Apr 2011 15:49:00 -0600 Subject: [PATCH] fix CGC ephemeron bug Merge to 5.1.1 (cherry picked from commit 5ae4b0016820e33195066a0d3956102f51991f3f) --- src/racket/src/list.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/racket/src/list.c b/src/racket/src/list.c index b4c3cb045d..186b510e72 100644 --- a/src/racket/src/list.c +++ b/src/racket/src/list.c @@ -3259,7 +3259,7 @@ Scheme_Object *scheme_make_ephemeron(Scheme_Object *key, Scheme_Object *val) Scheme_Ephemeron *e; int can_gc = 1; - if (SCHEME_INTP(val) || !GC_base(val)) + if (SCHEME_INTP(key) || !GC_base(key)) can_gc = 0; if (can_gc) { @@ -3268,12 +3268,12 @@ Scheme_Object *scheme_make_ephemeron(Scheme_Object *key, Scheme_Object *val) e = (Scheme_Ephemeron *)scheme_malloc(sizeof(Scheme_Ephemeron)); } e->so.type = scheme_ephemeron_type; + e->key = key; + e->val = val; if (can_gc) { e->next = ephemerons; ephemerons = e; } - e->key = key; - e->val = val; return (Scheme_Object *)e; #endif