aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorMatt Armstrong2022-11-08 15:00:18 -0800
committerStefan Kangas2022-11-30 18:08:35 +0100
commit656a54b823599bc50e849e96c790556e9c42ab9b (patch)
treee2b93815ba5c6ff77ac3f7d30235954259129286 /src
parent32615c9bc124970aade150e81c2ed4a5c0492ef7 (diff)
downloademacs-656a54b823599bc50e849e96c790556e9c42ab9b.tar.gz
emacs-656a54b823599bc50e849e96c790556e9c42ab9b.zip
Add itree_empty_p for clarity and reduced coupling
* src/itree.h (itree_empty_p): New predicate. * src/buffer.h (buffer_has_overlays): * src/pdumper.c (dump_buffer): * src/alloc.c (mark_buffer): Call it. (Bug#59137)
Diffstat (limited to 'src')
-rw-r--r--src/alloc.c2
-rw-r--r--src/buffer.h3
-rw-r--r--src/itree.h9
-rw-r--r--src/pdumper.c2
4 files changed, 12 insertions, 4 deletions
diff --git a/src/alloc.c b/src/alloc.c
index 980085d3292..ff8b4b40aaa 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -6553,7 +6553,7 @@ mark_buffer (struct buffer *buffer)
6553 if (!BUFFER_LIVE_P (buffer)) 6553 if (!BUFFER_LIVE_P (buffer))
6554 mark_object (BVAR (buffer, undo_list)); 6554 mark_object (BVAR (buffer, undo_list));
6555 6555
6556 if (buffer->overlays) 6556 if (!itree_empty_p (buffer->overlays))
6557 mark_overlays (buffer->overlays->root); 6557 mark_overlays (buffer->overlays->root);
6558 6558
6559 /* If this is an indirect buffer, mark its base buffer. */ 6559 /* If this is an indirect buffer, mark its base buffer. */
diff --git a/src/buffer.h b/src/buffer.h
index dded0cd98c1..9ead875bcf8 100644
--- a/src/buffer.h
+++ b/src/buffer.h
@@ -1277,8 +1277,7 @@ set_buffer_intervals (struct buffer *b, INTERVAL i)
1277INLINE bool 1277INLINE bool
1278buffer_has_overlays (void) 1278buffer_has_overlays (void)
1279{ 1279{
1280 return current_buffer->overlays 1280 return !itree_empty_p (current_buffer->overlays);
1281 && (current_buffer->overlays->root != NULL);
1282} 1281}
1283 1282
1284/* Functions for accessing a character or byte, 1283/* Functions for accessing a character or byte,
diff --git a/src/itree.h b/src/itree.h
index 291fa53fd30..248ea9b84d2 100644
--- a/src/itree.h
+++ b/src/itree.h
@@ -25,6 +25,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
25 25
26#include "lisp.h" 26#include "lisp.h"
27 27
28INLINE_HEADER_BEGIN
29
28/* The tree and node structs are mainly here, so they can be 30/* The tree and node structs are mainly here, so they can be
29 allocated. 31 allocated.
30 32
@@ -114,6 +116,11 @@ extern void itree_node_set_region (struct itree_tree *, struct itree_node *,
114 ptrdiff_t, ptrdiff_t); 116 ptrdiff_t, ptrdiff_t);
115extern struct itree_tree *itree_create (void); 117extern struct itree_tree *itree_create (void);
116extern void itree_destroy (struct itree_tree *); 118extern void itree_destroy (struct itree_tree *);
119INLINE bool
120itree_empty_p (struct itree_tree *tree)
121{
122 return !tree || !tree->root;
123}
117extern intmax_t itree_size (struct itree_tree *); 124extern intmax_t itree_size (struct itree_tree *);
118extern void itree_clear (struct itree_tree *); 125extern void itree_clear (struct itree_tree *);
119extern void itree_insert (struct itree_tree *, struct itree_node *, 126extern void itree_insert (struct itree_tree *, struct itree_node *,
@@ -178,4 +185,6 @@ struct itree_iterator
178#define ITREE_FOREACH_NARROW(beg, end) \ 185#define ITREE_FOREACH_NARROW(beg, end) \
179 itree_iterator_narrow (itree_iter_, beg, end) 186 itree_iterator_narrow (itree_iter_, beg, end)
180 187
188INLINE_HEADER_END
189
181#endif 190#endif
diff --git a/src/pdumper.c b/src/pdumper.c
index fedcd3e4044..35e86d2b504 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -2863,7 +2863,7 @@ dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer)
2863 DUMP_FIELD_COPY (out, buffer, inhibit_buffer_hooks); 2863 DUMP_FIELD_COPY (out, buffer, inhibit_buffer_hooks);
2864 DUMP_FIELD_COPY (out, buffer, long_line_optimizations_p); 2864 DUMP_FIELD_COPY (out, buffer, long_line_optimizations_p);
2865 2865
2866 if (buffer->overlays && buffer->overlays->root != NULL) 2866 if (!itree_empty_p (buffer->overlays))
2867 /* We haven't implemented the code to dump overlays. */ 2867 /* We haven't implemented the code to dump overlays. */
2868 emacs_abort (); 2868 emacs_abort ();
2869 else 2869 else