fix CGC ephemeron bug

Merge to 5.1.1
(cherry picked from commit 5ae4b00168)
This commit is contained in:
Matthew Flatt 2011-04-25 15:49:00 -06:00 committed by Eli Barzilay
parent 659cb91c2d
commit 7b604f37c2

View File

@ -3259,7 +3259,7 @@ Scheme_Object *scheme_make_ephemeron(Scheme_Object *key, Scheme_Object *val)
Scheme_Ephemeron *e; Scheme_Ephemeron *e;
int can_gc = 1; int can_gc = 1;
if (SCHEME_INTP(val) || !GC_base(val)) if (SCHEME_INTP(key) || !GC_base(key))
can_gc = 0; can_gc = 0;
if (can_gc) { 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 = (Scheme_Ephemeron *)scheme_malloc(sizeof(Scheme_Ephemeron));
} }
e->so.type = scheme_ephemeron_type; e->so.type = scheme_ephemeron_type;
e->key = key;
e->val = val;
if (can_gc) { if (can_gc) {
e->next = ephemerons; e->next = ephemerons;
ephemerons = e; ephemerons = e;
} }
e->key = key;
e->val = val;
return (Scheme_Object *)e; return (Scheme_Object *)e;
#endif #endif