From 8d03c978be83beccae1dd9c00cf310a6d4f93eae Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 11 Jan 2012 21:11:08 -0800 Subject: Before releasing 53, there is this. * eval.c (c_var_mark): Bugfix: we cannot use cptr_get from within the garbage collector because of its type check. Bugfix: synchronize the shadow binding with the variable's current contents so we don't hang on to a stale object. --- ChangeLog | 9 +++++++++ eval.c | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 9a36dcec..d734c6a2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2012-01-11 Kaz Kylheku + + Before releasing 53, there is this. + + * eval.c (c_var_mark): Bugfix: we cannot use cptr_get from + within the garbage collector because of its type check. + Bugfix: synchronize the shadow binding with the variable's + current contents so we don't hang on to a stale object. + 2012-01-11 Kaz Kylheku Version 53 diff --git a/eval.c b/eval.c index e6393122..b721dab7 100644 --- a/eval.c +++ b/eval.c @@ -1443,7 +1443,8 @@ static void reg_fun(val sym, val fun) static void c_var_mark(val obj) { - struct c_var *cv = (struct c_var *) cptr_get(obj); + struct c_var *cv = (struct c_var *) obj->co.handle; + cv->bind->c.cdr = *cv->loc; /* synchronize shadow binding with variable */ gc_mark(cv->bind); /* we don't mark *loc since it should be a gc-protected C global! */ } -- cgit v1.2.3