Commit f0863a54 authored by Dmitry Antipov's avatar Dmitry Antipov

Do not verify indirection counters of killed buffers (Bug#12579).

* buffer.h (BUFFER_CHECK_INDIRECTION): New macro.
* buffer.c (compact_buffer, set_buffer_internal_1): Use it.
parent ab1dc14b
2012-10-17 Dmitry Antipov <dmantipov@yandex.ru>
Do not verify indirection counters of killed buffers (Bug#12579).
* buffer.h (BUFFER_CHECK_INDIRECTION): New macro.
* buffer.c (compact_buffer, set_buffer_internal_1): Use it.
2012-10-16 Dmitry Antipov <dmantipov@yandex.ru>
* alloc.c (Fmake_byte_code): Fix typo in comment.
......
......@@ -1663,18 +1663,11 @@ No argument or nil as argument means do this for the current buffer. */)
void
compact_buffer (struct buffer *buffer)
{
/* Verify indirection counters. */
if (buffer->base_buffer)
{
eassert (buffer->indirections == -1);
eassert (buffer->base_buffer->indirections > 0);
}
else
eassert (buffer->indirections >= 0);
BUFFER_CHECK_INDIRECTION (buffer);
/* Skip dead buffers, indirect buffers and buffers
which aren't changed since last compaction. */
if (!NILP (buffer->INTERNAL_FIELD (name))
if (BUFFER_LIVE_P (buffer)
&& (buffer->base_buffer == NULL)
&& (buffer->text->compact != buffer->text->modiff))
{
......@@ -2114,6 +2107,8 @@ set_buffer_internal_1 (register struct buffer *b)
if (current_buffer == b)
return;
BUFFER_CHECK_INDIRECTION (b);
old_buf = current_buffer;
current_buffer = b;
last_known_column_point = -1; /* invalidate indentation cache */
......
......@@ -963,6 +963,22 @@ bset_width_table (struct buffer *b, Lisp_Object val)
#define BUFFER_LIVE_P(b) (!NILP (BVAR (b, name)))
/* Verify indirection counters. */
#define BUFFER_CHECK_INDIRECTION(b) \
do { \
if (BUFFER_LIVE_P (b)) \
{ \
if (b->base_buffer) \
{ \
eassert (b->indirections == -1); \
eassert (b->base_buffer->indirections > 0); \
} \
else \
eassert (b->indirections >= 0); \
} \
} while (0)
/* Chain of all buffers, including killed ones. */
extern struct buffer *all_buffers;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment