From 5004c3bfbb0e3bbaa7d91658eee04d2d4daef663 Mon Sep 17 00:00:00 2001 From: Dmitry Antipov Date: Tue, 21 Jan 2014 06:28:57 +0400 Subject: * buffer.c (Fkill_buffer): When killing an indirect buffer, re-attach intervals to its base buffer (Bug#16502). * intervals.c (set_interval_object): Move from here... * intervals.h (set_interval_object): ... to here. Fix comments. --- src/buffer.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'src/buffer.c') diff --git a/src/buffer.c b/src/buffer.c index 8f557634b2a..33bd80d3f4f 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -1868,6 +1868,7 @@ cleaning up all windows currently displaying the buffer to be killed. */) if (b->base_buffer) { + INTERVAL i; /* Unchain all markers that belong to this indirect buffer. Don't unchain the markers that belong to the base buffer or its other indirect buffers. */ @@ -1882,6 +1883,14 @@ cleaning up all windows currently displaying the buffer to be killed. */) else mp = &m->next; } + /* Intervals should be owned by the base buffer (Bug#16502). */ + i = buffer_intervals (b); + if (i) + { + Lisp_Object owner; + XSETBUFFER (owner, b->base_buffer); + set_interval_object (i, owner); + } } else { -- cgit v1.2.1