From 023dddaf723aacd6579331f76f61a2741a4e52d5 Mon Sep 17 00:00:00 2001 From: Matt Armstrong Date: Tue, 8 Nov 2022 15:00:18 -0800 Subject: [PATCH 1/2] Add itree_empty_p for clarity and reduced coupling * src/itree.h (itree_empty_p): New predicate. * src/buffer.h (buffer_has_overlays): Call it. * src/pdumper.c (dump_buffer): ditto. * src/alloc.c (mark_buffer): ditto. --- src/alloc.c | 2 +- src/buffer.h | 3 +-- src/itree.h | 9 +++++++++ src/pdumper.c | 2 +- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/alloc.c b/src/alloc.c index 6862cf916fb..d815a199fe0 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -6548,7 +6548,7 @@ mark_buffer (struct buffer *buffer) if (!BUFFER_LIVE_P (buffer)) mark_object (BVAR (buffer, undo_list)); - if (buffer->overlays) + if (!itree_empty_p (buffer->overlays)) mark_overlays (buffer->overlays->root); /* If this is an indirect buffer, mark its base buffer. */ diff --git a/src/buffer.h b/src/buffer.h index 2e80c8a7b04..08b0420c066 100644 --- a/src/buffer.h +++ b/src/buffer.h @@ -1273,8 +1273,7 @@ set_buffer_intervals (struct buffer *b, INTERVAL i) INLINE bool buffer_has_overlays (void) { - return current_buffer->overlays - && (current_buffer->overlays->root != NULL); + return !itree_empty_p (current_buffer->overlays); } /* Functions for accessing a character or byte, diff --git a/src/itree.h b/src/itree.h index 10ee0897c37..d6c6fb10591 100644 --- a/src/itree.h +++ b/src/itree.h @@ -25,6 +25,8 @@ #define ITREE_H #include "lisp.h" +INLINE_HEADER_BEGIN + /* The tree and node structs are mainly here, so they can be allocated. @@ -117,6 +119,11 @@ #define ITREE_H ptrdiff_t, ptrdiff_t); extern struct itree_tree *itree_create (void); extern void itree_destroy (struct itree_tree *); +INLINE bool +itree_empty_p (struct itree_tree *tree) +{ + return !tree || !tree->root; +} extern intmax_t itree_size (struct itree_tree *); extern void itree_clear (struct itree_tree *); extern void itree_insert (struct itree_tree *, struct itree_node *, @@ -183,4 +190,6 @@ #define ITREE_FOREACH_ABORT() \ #define ITREE_FOREACH_NARROW(beg, end) \ itree_iterator_narrow (itree_iter_, beg, end) +INLINE_HEADER_END + #endif diff --git a/src/pdumper.c b/src/pdumper.c index 0a5d96dbb7c..22d3f3f90e4 100644 --- a/src/pdumper.c +++ b/src/pdumper.c @@ -2863,7 +2863,7 @@ dump_buffer (struct dump_context *ctx, const struct buffer *in_buffer) DUMP_FIELD_COPY (out, buffer, inhibit_buffer_hooks); DUMP_FIELD_COPY (out, buffer, long_line_optimizations_p); - if (buffer->overlays && buffer->overlays->root != NULL) + if (!itree_empty_p (buffer->overlays)) /* We haven't implemented the code to dump overlays. */ emacs_abort (); else -- 2.35.1