aboutsummaryrefslogtreecommitdiffstats
path: root/src/buffer.h
diff options
context:
space:
mode:
authorGerd Möllmann2022-09-28 16:30:34 +0200
committerGerd Möllmann2022-09-28 16:30:34 +0200
commit498d331b07117408c5c5d8a3889b49b275b9a654 (patch)
tree645d97f0bd0b9e310b6257b515d14026071d04bd /src/buffer.h
parent8173a292e7366beff0279480cbd2f73bf2357568 (diff)
downloademacs-498d331b07117408c5c5d8a3889b49b275b9a654.tar.gz
emacs-498d331b07117408c5c5d8a3889b49b275b9a654.zip
Add debugging help for nested iterators (nug#58144)
When starting an iteration, store __FILE__ and __LINE__ where this happens in the interval_tree structure. * src/buffer.h (buffer_overlay_iter_start): New macro adding __FILE and __LINE__. (buffer_overlay_iter_start1): Renamed from ..._start. * src/itree.h (struct interval_tree): Add file and line info. * src/itree.c: (interval_tree_contains, interval_tree_nodes, interval_tree_insert_gap): Pass __FILE__ and __LINE__ to iter_start. (interval_tree_iter_start): Record file and line info in tree.
Diffstat (limited to 'src/buffer.h')
-rw-r--r--src/buffer.h9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/buffer.h b/src/buffer.h
index 7d6c693b0f2..097283be671 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1457,13 +1457,16 @@ remove_buffer_overlay (struct buffer *b, struct Lisp_Overlay *ov)
1457} 1457}
1458 1458
1459INLINE void 1459INLINE void
1460buffer_overlay_iter_start (struct buffer *b, ptrdiff_t begin, ptrdiff_t end, 1460buffer_overlay_iter_start1 (struct buffer *b, ptrdiff_t begin, ptrdiff_t end,
1461 enum interval_tree_order order) 1461 enum interval_tree_order order, const char* file, int line)
1462{ 1462{
1463 if (b->overlays) 1463 if (b->overlays)
1464 interval_tree_iter_start (b->overlays, begin, end, order); 1464 interval_tree_iter_start (b->overlays, begin, end, order, file, line);
1465} 1465}
1466 1466
1467#define buffer_overlay_iter_start(b, begin, end, order) \
1468 buffer_overlay_iter_start1 ((b), (begin), (end), (order), __FILE__, __LINE__)
1469
1467INLINE struct interval_node* 1470INLINE struct interval_node*
1468buffer_overlay_iter_next (struct buffer *b) 1471buffer_overlay_iter_next (struct buffer *b)
1469{ 1472{