diff options
Diffstat (limited to 'src/alloc.c')
| -rw-r--r-- | src/alloc.c | 20 |
1 files changed, 3 insertions, 17 deletions
diff --git a/src/alloc.c b/src/alloc.c index db8f39a60e0..50968b7e121 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -6512,21 +6512,6 @@ mark_overlay (struct Lisp_Overlay *ov) | |||
| 6512 | mark_object (ov->plist); | 6512 | mark_object (ov->plist); |
| 6513 | } | 6513 | } |
| 6514 | 6514 | ||
| 6515 | static void | ||
| 6516 | mark_overlays (struct interval_tree *it, struct interval_node *in) | ||
| 6517 | { | ||
| 6518 | /* `left/right` are set to NULL when the overlay is deleted, but | ||
| 6519 | they use the `null` node instead when the overlay is not deleted | ||
| 6520 | (i.e. is within an overlay tree). */ | ||
| 6521 | eassert (in); | ||
| 6522 | if (in == ITREE_NULL) | ||
| 6523 | return; | ||
| 6524 | |||
| 6525 | mark_object (in->data); | ||
| 6526 | mark_overlays (it, in->left); | ||
| 6527 | mark_overlays (it, in->right); | ||
| 6528 | } | ||
| 6529 | |||
| 6530 | /* Mark Lisp_Objects and special pointers in BUFFER. */ | 6515 | /* Mark Lisp_Objects and special pointers in BUFFER. */ |
| 6531 | 6516 | ||
| 6532 | static void | 6517 | static void |
| @@ -6548,8 +6533,9 @@ mark_buffer (struct buffer *buffer) | |||
| 6548 | if (!BUFFER_LIVE_P (buffer)) | 6533 | if (!BUFFER_LIVE_P (buffer)) |
| 6549 | mark_object (BVAR (buffer, undo_list)); | 6534 | mark_object (BVAR (buffer, undo_list)); |
| 6550 | 6535 | ||
| 6551 | if (buffer->overlays) | 6536 | struct interval_node *node; |
| 6552 | mark_overlays (buffer->overlays, buffer->overlays->root); | 6537 | ITREE_FOREACH (node, buffer->overlays, PTRDIFF_MIN, PTRDIFF_MAX, ASCENDING) |
| 6538 | mark_object (node->data); | ||
| 6553 | 6539 | ||
| 6554 | /* If this is an indirect buffer, mark its base buffer. */ | 6540 | /* If this is an indirect buffer, mark its base buffer. */ |
| 6555 | if (buffer->base_buffer && | 6541 | if (buffer->base_buffer && |