summaryrefslogtreecommitdiffstats
path: root/lib.h
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2024-06-15 16:40:53 -0700
committerKaz Kylheku <kaz@kylheku.com>2024-06-15 16:40:53 -0700
commit3662537e57df9b1f2e260d25eef17717981b3d45 (patch)
treee100b8a49f314bdadaa9779ed0cc40a9cfe6fe1d /lib.h
parent38a76d820decec3c703185b12a0f89bedec7716c (diff)
downloadtxr-3662537e57df9b1f2e260d25eef17717981b3d45.tar.gz
txr-3662537e57df9b1f2e260d25eef17717981b3d45.tar.bz2
txr-3662537e57df9b1f2e260d25eef17717981b3d45.zip
seq_iter: fix inadequate gc marking for some types.
* lib.c (seq_iter_mark_oop, seq_iter_mark_cat): New static functions. (si_oop_ops, si_fast_oop_ops): Use seq_iter_mark_oop instead of the generic one, because we need to mark the next field, not only the iter. (si_cat_ops): Use seq_iter_mark_cat, since we need to mark only the second field, dargs. * lib.h (seq_iter_ops_init_mark): New macro.
Diffstat (limited to 'lib.h')
-rw-r--r--lib.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib.h b/lib.h
index 04e4f725..95964c04 100644
--- a/lib.h
+++ b/lib.h
@@ -470,6 +470,7 @@ struct seq_iter_ops {
#define seq_iter_ops_init(get, peek) { get, peek, seq_iter_mark_op, 0 }
#define seq_iter_ops_init_nomark(get, peek) { get, peek, 0, 0 }
+#define seq_iter_ops_init_mark(get, peek, mark) { get, peek, mark, 0 }
#define seq_iter_ops_init_clone(get, peek, clone) \
{ get, peek, seq_iter_mark_op, clone }