fix CGC ephemeron bug
Merge to 5.1.1
(cherry picked from commit 5ae4b00168
)
This commit is contained in:
parent
659cb91c2d
commit
7b604f37c2
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user