777 |
else |
else |
778 |
{ |
{ |
779 |
int count = SPECPDL_INDEX (); |
int count = SPECPDL_INDEX (); |
780 |
|
Lisp_Object overlay; |
781 |
|
struct buffer *b = XBUFFER (buf); |
782 |
|
|
783 |
reset_buffer (XBUFFER (buf)); |
/* `reset_buffer' blindly sets the list of overlays to NULL, so we |
784 |
|
have to empty the list, otherwise we end up with overlays that |
785 |
|
think they belong to this buffer while the buffer doesn't know about |
786 |
|
them any more. */ |
787 |
|
while (b->overlays_before) |
788 |
|
{ |
789 |
|
XSETMISC (overlay, b->overlays_before); |
790 |
|
Fdelete_overlay (overlay); |
791 |
|
} |
792 |
|
while (b->overlays_after) |
793 |
|
{ |
794 |
|
XSETMISC (overlay, b->overlays_after); |
795 |
|
Fdelete_overlay (overlay); |
796 |
|
} |
797 |
|
eassert (b->overlays_before == NULL); |
798 |
|
eassert (b->overlays_after == NULL); |
799 |
|
|
800 |
|
reset_buffer (b); |
801 |
record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); |
record_unwind_protect (Fset_buffer, Fcurrent_buffer ()); |
802 |
Fset_buffer (buf); |
Fset_buffer (buf); |
803 |
Fkill_all_local_variables (); |
Fkill_all_local_variables (); |