diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | eval.c | 3 |
2 files changed, 11 insertions, 1 deletions
@@ -1,5 +1,14 @@ 2012-01-11 Kaz Kylheku <kaz@kylheku.com> + 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 <kaz@kylheku.com> + Version 53 * txr.c (version): Bumped. @@ -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! */ } |