]> git.eshelyaron.com Git - emacs.git/commitdiff
Add itree_empty_p for clarity and reduced coupling
authorMatt Armstrong <matt@rfc20.org>
Tue, 8 Nov 2022 23:00:18 +0000 (15:00 -0800)
committerStefan Kangas <stefankangas@gmail.com>
Wed, 30 Nov 2022 17:08:35 +0000 (18:08 +0100)
* 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)

src/alloc.c
src/buffer.h
src/itree.h
src/pdumper.c

index 980085d3292728c9b97c5639f28bf3245b128928..ff8b4b40aaafde1419f05283ef5b6b6ffd20b2d7 100644 (file)
@@ -6553,7 +6553,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.  */
index dded0cd98c1acc7eb5dd3d694da04bb8a5ce82cc..9ead875bcf84aae915c960b0e8509e2649291083 100644 (file)
@@ -1277,8 +1277,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);
 }
 \f
 /* Functions for accessing a character or byte,
index 291fa53fd30ecebac78aa1d57d38b92a0b003140..248ea9b84d2115b4e71c5a4fe1283b6acc58a922 100644 (file)
@@ -25,6 +25,8 @@ along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "lisp.h"
 
+INLINE_HEADER_BEGIN
+
 /* The tree and node structs are mainly here, so they can be
    allocated.
 
@@ -114,6 +116,11 @@ extern void itree_node_set_region (struct itree_tree *, struct itree_node *,
                                   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 *,
@@ -178,4 +185,6 @@ struct itree_iterator
 #define ITREE_FOREACH_NARROW(beg, end) \
   itree_iterator_narrow (itree_iter_, beg, end)
 
+INLINE_HEADER_END
+
 #endif
index fedcd3e404492d7df0eeee31a1edbd8fdd187d7f..35e86d2b5041a416f4d4a9534e033af958f035ff 100644 (file)
@@ -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