diff options
| author | Matt Armstrong | 2022-11-08 15:00:18 -0800 |
|---|---|---|
| committer | Stefan Kangas | 2022-11-30 18:08:35 +0100 |
| commit | 656a54b823599bc50e849e96c790556e9c42ab9b (patch) | |
| tree | e2b93815ba5c6ff77ac3f7d30235954259129286 /src | |
| parent | 32615c9bc124970aade150e81c2ed4a5c0492ef7 (diff) | |
| download | emacs-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.c | 2 | ||||
| -rw-r--r-- | src/buffer.h | 3 | ||||
| -rw-r--r-- | src/itree.h | 9 | ||||
| -rw-r--r-- | src/pdumper.c | 2 |
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) | |||
| 1277 | INLINE bool | 1277 | INLINE bool |
| 1278 | buffer_has_overlays (void) | 1278 | buffer_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 | ||
| 28 | INLINE_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); |
| 115 | extern struct itree_tree *itree_create (void); | 117 | extern struct itree_tree *itree_create (void); |
| 116 | extern void itree_destroy (struct itree_tree *); | 118 | extern void itree_destroy (struct itree_tree *); |
| 119 | INLINE bool | ||
| 120 | itree_empty_p (struct itree_tree *tree) | ||
| 121 | { | ||
| 122 | return !tree || !tree->root; | ||
| 123 | } | ||
| 117 | extern intmax_t itree_size (struct itree_tree *); | 124 | extern intmax_t itree_size (struct itree_tree *); |
| 118 | extern void itree_clear (struct itree_tree *); | 125 | extern void itree_clear (struct itree_tree *); |
| 119 | extern void itree_insert (struct itree_tree *, struct itree_node *, | 126 | extern 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 | ||
| 188 | INLINE_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 |