From dd839dc6ed1abf51645f5e69572ab9e106272c33 Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Tue, 18 Jun 2024 03:34:35 -0700 Subject: bugfix: several seq_iter kinds need clone operation. Several seq_iter_t kinds of objects cannot be correctly bitwise copied, because they point to an iterator object that cannot be shared. * lib.c (seq_iter_clone_op): New static function. (si_hash_ops, si_tree_ops, si_oop_ops, si_fast_oop_ops): Use seq_iter_clone_op, which uses the copy function to duplicate it->ui.iter after doing a bitwise copy of the structure. * lib.h (seq_iter_ops_init_full): New macro. --- lib.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib.h') diff --git a/lib.h b/lib.h index 18037392..0c300e8a 100644 --- a/lib.h +++ b/lib.h @@ -474,6 +474,8 @@ struct seq_iter_ops { #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 } +#define seq_iter_ops_init_full(get, peek, mark, clone) \ + { get, peek, mark, clone } typedef struct seq_build { val obj; -- cgit v1.2.3