Mercurial > emacs
changeset 51669:f3dc77591fe2
(set_buffer_internal_1): Test CONSP for lists.
(Fget_buffer_create, Fkill_buffer, Fset_buffer_multibyte): Update to new types.
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 26 Jun 2003 23:16:44 +0000 |
parents | 0f333fd92a1d |
children | beceb827c1ce |
files | src/buffer.c |
diffstat | 1 files changed, 22 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/src/buffer.c Thu Jun 26 23:16:05 2003 +0000 +++ b/src/buffer.c Thu Jun 26 23:16:44 2003 +0000 @@ -413,7 +413,7 @@ reset_buffer_local_variables (b, 1); b->mark = Fmake_marker (); - BUF_MARKERS (b) = Qnil; + BUF_MARKERS (b) = NULL; b->name = name; /* Put this in the alist of all live buffers. */ @@ -1408,28 +1408,26 @@ /* 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. */ - for (tem = BUF_MARKERS (b); !NILP (tem); ) + for (m = BUF_MARKERS (b); m; ) { - Lisp_Object next; - m = XMARKER (tem); - next = m->chain; + struct Lisp_Marker *next = m->next; if (m->buffer == b) - unchain_marker (tem); - tem = next; + unchain_marker (m); + m = next; } } else { /* Unchain all markers of this buffer and its indirect buffers. and leave them pointing nowhere. */ - for (tem = BUF_MARKERS (b); !NILP (tem); ) + for (m = BUF_MARKERS (b); m; ) { - m = XMARKER (tem); + struct Lisp_Marker *next = m->next; m->buffer = 0; - tem = m->chain; - m->chain = Qnil; + m->next = NULL; + m = next; } - BUF_MARKERS (b) = Qnil; + BUF_MARKERS (b) = NULL; BUF_INTERVALS (b) = NULL_INTERVAL; /* Perhaps we should explicitly free the interval tree here... */ @@ -1773,7 +1771,7 @@ /* Look down buffer's list of local Lisp variables to find and update any that forward into C variables. */ - for (tail = b->local_var_alist; !NILP (tail); tail = XCDR (tail)) + for (tail = b->local_var_alist; CONSP (tail); tail = XCDR (tail)) { valcontents = SYMBOL_VALUE (XCAR (XCAR (tail))); if ((BUFFER_LOCAL_VALUEP (valcontents) @@ -1788,7 +1786,7 @@ /* Do the same with any others that were local to the previous buffer */ if (old_buf) - for (tail = old_buf->local_var_alist; !NILP (tail); tail = XCDR (tail)) + for (tail = old_buf->local_var_alist; CONSP (tail); tail = XCDR (tail)) { valcontents = SYMBOL_VALUE (XCAR (XCAR (tail))); if ((BUFFER_LOCAL_VALUEP (valcontents) @@ -2046,7 +2044,7 @@ (flag) Lisp_Object flag; { - Lisp_Object tail, markers; + struct Lisp_Marker *tail, *markers; struct buffer *other; int undo_enabled_p = !EQ (current_buffer->undo_list, Qt); int begv, zv; @@ -2093,12 +2091,9 @@ GPT = GPT_BYTE; TEMP_SET_PT_BOTH (PT_BYTE, PT_BYTE); - tail = BUF_MARKERS (current_buffer); - while (! NILP (tail)) - { - XMARKER (tail)->charpos = XMARKER (tail)->bytepos; - tail = XMARKER (tail)->chain; - } + + for (tail = BUF_MARKERS (current_buffer); tail; tail = tail->next) + tail->charpos = tail->bytepos; /* Convert multibyte form of 8-bit characters to unibyte. */ pos = BEG; @@ -2246,20 +2241,17 @@ /* This prevents BYTE_TO_CHAR (that is, buf_bytepos_to_charpos) from getting confused by the markers that have not yet been updated. It is also a signal that it should never create a marker. */ - BUF_MARKERS (current_buffer) = Qnil; - - while (! NILP (tail)) + BUF_MARKERS (current_buffer) = NULL; + + for (; tail; tail = tail->next) { - XMARKER (tail)->bytepos - = advance_to_char_boundary (XMARKER (tail)->bytepos); - XMARKER (tail)->charpos = BYTE_TO_CHAR (XMARKER (tail)->bytepos); - - tail = XMARKER (tail)->chain; + tail->bytepos = advance_to_char_boundary (tail->bytepos); + tail->charpos = BYTE_TO_CHAR (tail->bytepos); } /* Make sure no markers were put on the chain while the chain value was incorrect. */ - if (! EQ (BUF_MARKERS (current_buffer), Qnil)) + if (BUF_MARKERS (current_buffer)) abort (); BUF_MARKERS (current_buffer) = markers;