From: Stefan Monnier Date: Tue, 22 Jul 2003 19:02:11 +0000 (+0000) Subject: (delete_all_overlays): New function. X-Git-Tag: ttn-vms-21-2-B4~9261 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d4f5719ace3b4287687812c808a0806a769fcf76;p=emacs.git (delete_all_overlays): New function. --- diff --git a/src/buffer.c b/src/buffer.c index cbbe4153106..40ee3f071de 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -630,8 +630,36 @@ CLONE nil means the indirect buffer's state is reset to default values. */) return buf; } +void +delete_all_overlays (b) + struct buffer *b; +{ + Lisp_Object overlay; + + /* `reset_buffer' blindly sets the list of overlays to NULL, so we + have to empty the list, otherwise we end up with overlays that + think they belong to this buffer while the buffer doesn't know about + them any more. */ + while (b->overlays_before) + { + XSETMISC (overlay, b->overlays_before); + Fdelete_overlay (overlay); + } + while (b->overlays_after) + { + XSETMISC (overlay, b->overlays_after); + Fdelete_overlay (overlay); + } + eassert (b->overlays_before == NULL); + eassert (b->overlays_after == NULL); +} + /* Reinitialize everything about a buffer except its name and contents - and local variables. */ + and local variables. + If called on an already-initialized buffer, the list of overlays + should be deleted before calling this function, otherwise we end up + with overlays that claim to belong to the buffer but the buffer + claims it doesn't belong to it. */ void reset_buffer (b)