diff --git a/gc.c b/gc.c index 631e992f..3f5c53d6 100644 --- a/gc.c +++ b/gc.c @@ -270,7 +270,7 @@ static void sexp_mark_one (sexp ctx, sexp* types, sexp x) { if (len >= 0) { p = (sexp*) (((char*)x) + sexp_type_field_base(t)); q = p + len; - while (p < q && ! (*q && sexp_pointerp(*q))) + while (p < q && (*q && sexp_pointerp(*q) ? sexp_markedp(*q) : 1)) q--; /* skip trailing immediates */ while (p < q && *q == q[-1]) q--; /* skip trailing duplicates */